var active_element = '';
var filled_elements = 0;
var invalid_elements = 0;
var valid_points = 0;
var invalid_points = 0;
var requirements = new Object;
var query_string = new Array();

var scroll_objects = new Array();
var scroll_top = new Array();
var scroll_old = new Array();
var scroll_window = new Array();
var scroll_document = new Array();

var default_state = new Object();

function cancel_event(e) {
	if (!e) var e = window.event; e.cancelBubble = true; 
	if (e.stopPropagation) {
		e.dataTransfer.dropEffect='none';
		e.stopPropagation();
		e.preventDefault();
	}
	e.returnValue = false;
	return false;
}

function get_target(e, curr_window, internal) {
	var targ = null;
	if (!curr_window) curr_window = window;
	if (!e) var e = curr_window.event;
	if (e) {
		if (e.target) targ = e.target;
		else if (e.srcElement) targ = e.srcElement;
		//commented: error on ie6
		//if (targ.nodeType == 3) // defeat Safari bug
		//		targ = targ.parentNode;
	}
	if (internal) {
		if (!(/MSIE (\d+\.\d+);/.test(navigator.userAgent))) {
			if (targ && targ.document) targ = targ.document;
		}
		if (!targ) targ = curr_window.document;
	}
	return targ;
}

var activeElement = null;
function _dom_trackActiveElement(evt) {
    if (evt && evt.target) { 
		activeElement = evt.target;
    }
}
function _dom_trackActiveElementLost(evt) { 
    activeElement = null;
}
if (!document.activeElement && document.addEventListener) {
    document.addEventListener("mousedown", _dom_trackActiveElement, true);
}

function onsubmit_form(e) {
	if (!e) var e = window.event;
	var curr_form = this.name;
	var obj_submit_button = e.explicitOriginalTarget ? e.explicitOriginalTarget : (activeElement ? activeElement : document.activeElement);
	if (obj_submit_button.type == 'submit') {
		if (document.forms[curr_form].elements[curr_app+'_forum']) {
			document.forms[curr_form].elements[curr_app+'_submit_button'].value = obj_submit_button.name;
			onsubmit_main_page("maincontainer___"+curr_app+"__index__forum", null, null);
		}
	}
	return false;
}

var scroll_object = null;

window.onload = onload_main_page;
window.onbeforeunload = onbeforeunload_main_page;
window.onunload = onunload_main_page;
var tmp_current_window = null;
var tmp_current_document = null;
var tmp_current_event = null;
function onload_main_page(e) {
	var curr_window = this;
	var curr_document = get_target(e, curr_window, true);
	for(var i = 0; i < curr_forms.length; i++) {
		if (curr_document.forms[curr_forms[i]]) {
			curr_document.forms[curr_forms[i]].onsubmit = onsubmit_form;
		}
	}
	scroll_object = null;
	if (curr_window.onload_page != null);
	eval('if (curr_window.onload_'+curr_app+'__'+curr_script+' != null) { curr_window.onload_'+curr_app+'__'+curr_script+'(e); }');
	if (scroll_object) {
		scroll_top[scroll_top.length] = 0;
		scroll_old[scroll_old.length] = 0;
		scroll_window[scroll_window.length] = curr_window;
		scroll_document[scroll_document.length] = curr_document;
		scroll_object.style.position = 'absolute';
		scroll_objects[scroll_objects.length] = scroll_object;
	}

	if (curr_document.forms[curr_forms[0]]) {
		var modules = get_element('modules', curr_document, curr_forms[0]);
		for(var i = 0; i < modules.length; i++) {
			eval('if (curr_window.onload_'+modules[i].value+' != null) { curr_window.onload_'+modules[i].value+'(e); }');
			//scroll_object = my_getDivById('div___'+modules[i].value);
			if (scroll_object) {
				scroll_top[scroll_top.length] = 0;
				scroll_old[scroll_old.length] = 0;
				scroll_window[scroll_window.length] = curr_window;
				scroll_document[scroll_document.length] = curr_document;
				scroll_object.style.position = 'absolute';
				scroll_objects[scroll_objects.length] = scroll_object;
			}
		}
	}
	for(var i = 0; i < curr_forms.length; i++) {
		if (curr_document.forms[curr_forms[i]]) {
			for(var j = 0; j < curr_document.forms[curr_forms[i]].elements.length; j++) {
	//			külön fgv-be kell tenni a set_element_flag-es hívásokat és azokat kell csak meghívni itt
	//			if (curr_document.forms[curr_form].elements[j].onchange) curr_document.forms[curr_form].elements[j].onchange();
			}
		}
	}
	if (curr_document) {
		for(var i = 0; i < curr_forms.length; i++) {
			if (curr_document.forms[curr_forms[i]] && curr_document.forms[curr_forms[i]].elements[curr_app+'_autofocus']) {
				//var old_focus=null; var old_obj=get_element(focus);
				//if (old_obj.onfocus) { old_focus=old_obj.onfocus; old_obj.onfocus=null; }
				//var focus = get_element_value(curr_app+'_autofocus');
				//set_element_focus(focus, '', (focus == ''));
				//if (old_focus) old_obj.onfocus=old_focus;
				break;
			}
		}
	}
	onresize_main_page(e, curr_window, curr_document, true);
	if (scroll_objects.length > 0) onscroll_object();
}

function onunload_main_page(e) {
	for(var i in windows) {
		if (windows[i]) {
			windows[i].close();
		}
	}
}

function onbeforeunload_main_page(e) {
	// same code in onsubmit_main_page function
	windows_str = '';
	for(var i in windows) {
		if (windows[i] && !windows[i].closed) {
			windows_str = windows_str + "\n- " + (windows[i].document.title ? windows[i].document.title : '[no name]');
		}
	}
	if (windows_str) return 'The following windows are still open:' + windows_str + "\nAre you sure to close them before continuing?";
}

var window_size = null;
window.onresize = onresize_main_page;
function onresize_main_page(e, curr_window, curr_document, first_onload) {
	if (!curr_window) {
		curr_window = this;
		curr_document = get_target(e, curr_window, true);
	}
	var tmp_window_size = get_window_size(curr_window, curr_document);
	if (tmp_window_size[1] != 0) {
		window_size = tmp_window_size;
	}
	eval('if (curr_window.onresize_'+curr_app+'__'+curr_script+' != null) { curr_window.onresize_'+curr_app+'__'+curr_script+'(e, first_onload); }');
	if (curr_document.forms[curr_forms[0]]) {
		var modules = get_element('modules', curr_document, curr_forms[0]);
		for(var i = 0; i < modules.length; i++) {
			eval('if (curr_window.onresize_'+modules[i].value+' != null) curr_window.onresize_'+modules[i].value+'(e, first_onload);');
		}
	}
}

function get_window_size(curr_window, curr_document) {
	var size_x = 0;
	var size_y = 0;
	if (typeof(curr_window.innerWidth) == 'number') {
		//Non-IE
		size_x = curr_window.innerWidth;
		size_y = curr_window.innerHeight;
	}
	else if (curr_document.documentElement && (curr_document.documentElement.clientWidth || curr_document.documentElement.clientHeight)) {
		//IE 6+ in 'standards compliant mode'
		size_x = curr_document.documentElement.clientWidth;
		size_y = curr_document.documentElement.clientHeight;
	}
	else if (curr_document.body && (curr_document.body.clientWidth || curr_document.body.clientHeight)) {
		//IE 4 compatible
		size_x = curr_document.body.clientWidth;
		size_y = curr_document.body.clientHeight;
	}
	return [size_x, size_y];
}

function get_div_top(div) {
	var top_x = 0;
	var top_y = 0;
	top_x = div.scrollLeft;
	top_y = div.scrollTop;
	return [top_x, top_y];
}

function get_window_top(curr_window, curr_document) {
	var top_x = 0;
	var top_y = 0;
	if (typeof(curr_window.pageYOffset) == 'number') {
		//Netscape compliant
		top_y = curr_window.pageYOffset;
		top_x = curr_window.pageXOffset;
	}
	else if (curr_document.body && (curr_document.body.scrollLeft || curr_document.body.scrollTop)) {
		//DOM compliant
		top_y = curr_document.body.scrollTop;
		top_x = curr_document.body.scrollLeft;
	}
	else if (curr_document.documentElement && (curr_document.documentElement.scrollLeft || curr_document.documentElement.scrollTop)) {
		//IE6 standards compliant mode
		top_y = curr_document.documentElement.scrollTop;
		top_x = curr_document.documentElement.scrollLeft;
	}
	return [top_x, top_y];
}

function onscroll_object() {
	for (var i=0; i<scroll_objects.length; i++) {
		if (!scroll_window[i].closed) {
			var pos = get_window_top(scroll_window[i], scroll_document[i]);
			if (pos[1] < scroll_top[i]) pos[1] = scroll_top[i];
			if (pos[1] != scroll_old[i]) {
				my_setPosition(scroll_objects[i], null, pos[1]);
			}
			scroll_old[i] = pos[1];
		}
	}
	var temp = setTimeout('onscroll_object()', 500);
}

function reload_main_page(params) {
	return onsubmit_main_page('', '', params);
}

function parse_url(url, query_elements) {
	var url_parts = url.split('?');
	if (url_parts.length == 1) {
		url_parts[1] = '';
	}
	if (query_elements !== true) {
		for(var i = 0; i < query_elements.length; i++) {
			var items = query_elements[i].split('=');
			var flag = items[0].substr(0, 1);
			if ((flag == '-') || (flag == '+') || (flag == 'X')) {
				items[0] = items[0].substr(1);
			}
			else {
				flag = '';
				url_parts[1] = '';
			}
			if (flag == 'X') {
				flag = '-';
				items[0] += '[^=]*';
			}
			url_parts[1] = url_parts[1].replace(new RegExp('(^|&)'+items[0]+'=[^&]*(?:&|)'), '$1');
			url_parts[1] = url_parts[1].replace(/&+$/, '');
			if ((items[1] != null) && (flag != '-')) {
				url_parts[1] = url_parts[1]+'&'+items[0]+'='+items[1];
			}
			url_parts[1] = url_parts[1].replace(/^&+/, '');
		}
	}
	return url_parts[0]+((url_parts[1] == '') ? '' : '?'+url_parts[1]);
}

var iCallbackTimer = null;

var popup_handle = null;
var popup_orig_module = null;
var popup_orig_action_id = null;
var popup_orig_params = null;
var popup_title = '';
var orig_action = null;

var form_submitted = false;
var form_action_in_progress = false;
function onsubmit_main_page(module, action_id, params, callback, curr_window, https) {
	if (form_submitted || form_action_in_progress) return;
	
	if (action_id == null) {
		action_id = '';
	}

	for(var element_name in default_state) {
		if (default_state[element_name].substr(0, 1) != '^') {
			set_element_value(element_name, '');
		}
	}

	form_action_in_progress = true;
	if (!curr_window) curr_window = window;
	curr_document = curr_window.document;
	filled_elements = 0;
	invalid_elements = 0;
	if (callback) {
		popup_orig_module = null;
		popup_orig_action_id = null;
		popup_orig_params = null;
	}
	if (action_id != 'refresh') {
		curr_window.clearInterval(iCallbackTimer);
	}

	var action_id_arr = action_id.split('.');
	var action_destination = '';
	var destination_url = '';
	if (action_id_arr.length > 1) {
		action_id = action_id_arr[0];
		action_destination = action_id_arr[1];
		destination_url = curr_window.frames[action_destination].location.href;
	}

	var valid = true;
	var orig_module = module;
	var tmp_arr = module.split('___');
	module = tmp_arr[1];
	if (module == '') {
		var tmp = params;
	}
	else {
		my_setAttribute(my_getElementById('div'+'___'+curr_app+'__error', curr_document), 'style', 'display: none !important;');
		toggle_item('block', curr_app+'__error', 'none', false, curr_document);
		function_name = module;
		if (action_id != '') {
			function_name += '_'+action_id;
		}
		eval('if (curr_window.onvalidate_'+function_name+' != null) { var validating = curr_window.onvalidate_'+function_name+'(params); }');
		if (validating) {
			valid_points = 0;
			invalid_points = 0;
			var curr_group_point = 0;
			var is_group_empty = true;
			var ids = '';
			re = /^(.*)___(.*)$/;
			for(var i = 0; i < validating.length; i++) {
				element_arr = re.exec(validating[i]);
				var module_name = '';
				if (element_arr) {
					module_name = element_arr[1];
				}
				var has_validation = false;
				var id = '';
				eval('if (curr_window.validate_'+validating[i]+' != null) { has_validation = true; id = curr_window.validate_'+validating[i]+'(\''+validating[i]+'\', \''+module_name+'\'); }');
				if (has_validation) {
					valid = valid && (id == '');
					if (id != '') {
						ids += '|'+validating[i]+'#'+id;
					}

					var value = get_element_value(validating[i], null, null, curr_document);
					var curr_empty = ((value == '') || (value == null));

					var curr_point = get_element_info('point', validating[i], '');
					if ((curr_point > 0) && (i > 0)) {
						if (is_group_empty) {
							invalid_points += curr_group_point;
						}
						else {
							valid_points += curr_group_point;
						}
						curr_group_point = 0;
						is_group_empty = true;
					}
				}
				curr_group_point += curr_point;
				is_group_empty = curr_empty && is_group_empty;
			}
			if (is_group_empty) {
				invalid_points += curr_group_point;
			}
			else {
				valid_points += curr_group_point;
			}
			ids = ids.substr(1);
			if (ids != '') {
				var errors = ids.split('|');
				for(var i = 0; i < 1; i++) {
					var elements = errors[i].split('#');
					alert(get_element_info('lang', elements[0], elements[1]));
					set_element_focus(elements[0]);
				}
			}
			else {
				var req_valid = true;
				for(var element_name in requirements) {
					if (requirements[element_name].length > 0) req_valid = false;
					for(var c=0; c < requirements[element_name].length; c++) {
						if (requirements[element_name][c]['at_least']){
							var ok = 0;
							for(var i = 0; i < requirements[element_name][c]['of'].length; i++) {
								var value = get_element_value(requirements[element_name][c]['of'][i]);
								if ((value != null) && (value != '')) ok++;
							}
							if (ok >= requirements[element_name][c]['at_least']) {
								req_valid = true;
							}
						}
					}
					if (!req_valid) {
						valid = false;
						invalid_elements++;
						alert(get_element_info('lang', element_name, 'requirement'));
						set_element_focus(element_name);
						break;
					}
				}
			}
		}
		eval('if (curr_window.onsubmit_'+function_name+' != null) { var tmp = curr_window.onsubmit_'+function_name+'(params, valid); } else { tmp = params; }');
	}
	var popup_params = false;

	var curr_form = module + '___form';
	if (!curr_document.forms[curr_form]) {
		curr_form = curr_forms[0];
	}

	if (valid) {
		if (tmp == '') {
			form_action_in_progress = false; return false;
		}

		// same code in onbeforeunload function
		windows_str = '';
		for(var i in windows) {
			if (windows[i] && !windows[i].closed) {
				windows_str = windows_str + "\n- " + (windows[i].document.title ? windows[i].document.title : '[no name]');
			}
		}
		if (onsubmit_popup_windows != 'leave') {
			form_submitted = (windows_str && (onsubmit_popup_windows == 'ask')) ? confirm('The following windows are still open:' + windows_str + "\nAre you sure to close them before continuing?") : (tmp !== false);
			if (!form_submitted) {
				form_action_in_progress = false; return false;
			}
			var flag_export_func = (action_id.substr(action_id.length-1) == '_');
			if (action_id && flag_export_func) form_submitted = false;
			for(var i in windows) {
				if (windows[i]) {
					windows[i].close();
				}
			}
			// same code in onbeforeunload function
		}

		if (tmp) {
			if (tmp[0] && tmp[0].substr(0, 1) == '*') {
				popup_params = tmp.shift();
				if (popup_params.substr(1, 1) == ':') {
					popup_title = popup_params.substr(2);
					popup_params = 'scrollbars=no';
				}
				else {
					popup_params = popup_params.substr(1);
					popup_params += (popup_params ? ',' : '')+'scrollbars=yes';
				}
				popup_params += (popup_params ? ',' : '')+'menubar=no,resizable=yes,dependent=yes';
				popup_orig_module = module;
				popup_orig_action_id = action_id;
				popup_orig_params = params;
			}
			if (query_string.length > 0) {
				tmp = tmp.concat(query_string);
				query_string.length = 0;
			}
			orig_action = curr_document.forms[curr_form].action;
			curr_document.forms[curr_form].action = parse_url(curr_document.forms[curr_form].action, tmp);
		}
	}
	if (!valid) {
		form_action_in_progress = false; return false;
	}
	if (https != null) curr_document.forms[curr_form].action = _url_2_https(curr_document.forms[curr_form].action, https, true);

	if (action_destination != '') {
		tmp_action_destination = "tmp";
		curr_document.forms[curr_form].target = tmp_action_destination;
	}

	if (module == '') {
		if (popup_params === false) {
			curr_window.location.href = curr_document.forms[curr_form].action;
		}
		else {
			popup_handle = curr_window.open(curr_document.forms[curr_form].action, curr_app+'_'+function_name, popup_params);
			if (popup_title) {
				popup_handle.document.title = popup_title;
			}
			popup_handle.focus();
		}
	}
	else {
		curr_document.forms[curr_form].elements[curr_app+'_submitter_module'].value = orig_module;
		curr_document.forms[curr_form].elements[curr_app+'_submitter_action_id'].value = action_id;
		if (popup_params !== false) {
			popup_handle = curr_window.open('', curr_app+'_'+function_name, popup_params);
			if (popup_title) {
				popup_doc = popup_handle.document.open("text/html", "replace");
				popup_doc.write('<body marginwidth=\'0\' marginheight=\'0\' topmargin=\'0\' bottommargin=\'0\' leftmargin=\'0\' rightmargin=\'0\'><iframe name="' + curr_app+'_'+function_name + '_" height="100%" width="100%" border="0" frameborder="0"></iframe></body>');
				popup_doc.close();
				popup_handle.document.title = popup_title;
				curr_document.forms[curr_form].target = popup_handle.frames[curr_frame].name;
			}
			else {
				curr_document.forms[curr_form].target = curr_app+'_'+function_name;
			}
		}
		submit_curr_window = curr_window;
		submit_curr_document = curr_document;
		iCallbackTimer = curr_window.setInterval('submit("'+action_destination+'", "'+destination_url+'", "'+curr_form+'");', 200);
	}
	popup_title = '';
	form_action_in_progress = form_submitted;
	return true;
}

function _url_2_https(url, https, submit) {
	if (https) {
		if (url.indexOf('https://') == 0) return url;
		if ((url.indexOf('http://') == 0) && !submit) return url;
		if ((url.indexOf('./') == 0) || (url.indexOf('/') == 0) || submit) {
			if (url.indexOf('/') == 0) {
				url = 'https://' + https_server + url;
			}
			else {
				var pos = url.indexOf('?');
				url = (pos >= 0) ? url.substr(pos) : '';
				url = 'https://' + https_server + curr_script_path + url;
			}
		}
		return url;
	}
	else {
		if (url.indexOf('http://') == 0) return url;
		if ((url.indexOf('https://') == 0) && !submit) return url;
		if ((url.indexOf('./') == 0) || (url.indexOf('/') == 0) || submit) {
			if (url.indexOf('/') == 0) {
				url = 'https://' + https_server + url;
			}
			else {
				var pos = url.indexOf('?');
				url = (pos >= 0) ? url.substr(pos) : '';
				url = 'http://' + http_server + curr_script_path + url;
			}
		}
		return url;
	}
}

var windows = new Object;
function open_popup(url, name, https, open_mode) {
	var handle = null;
	var toolbar = null;
	if (open_mode === true) {
		toolbar = 'toolbar=0,scrollbars=yes';
	}
	else if (open_mode) {
		toolbar = open_mode;
	}
	if ((name != window.name) && windows[name] && !windows[name].closed) {
		 handle = windows[name];
		 if (open_mode == null) {
			alert('Window is already opened! Tab based browsers cannot set the focus to the requested window so you need to find it manually.');
		 }
	}
	else {
		// temporary solution of an illegal &reg... conversion in query string
		if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
			url = url.replace(/&/g, '&amp;');
		}
		if (https != null) url = _url_2_https(url, https);
		if (name == window.name) window.name = '';
		if (toolbar) {
			handle = window.open(url, name, toolbar);
		}
		else {
			handle = window.open(url, name);
		}
		if (name != '_blank') {
			windows[name] = handle;
		}
	}
	if (handle == null) {
		alert('Popup windows are blocked by the browser, please change the settings!');
	}
	else {
		handle.focus();
	}
	return handle;
}

function open_link(url, name, https) {
	var reg = /\.html?(&.*|)$/i;
	if (reg.test(url)) {
		if (!name) name = '_blank';
		return open_popup(url, name, https);
	}
	else {
		// temporary solution of an illegal &reg... conversion in query string
		if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
			url = url.replace(/&/g, '&amp;');
		}
		if (https != null) url = _url_2_https(url, https);
		top.location.href = url;
	}
}

var submit_curr_window = null;
var submit_curr_document = null;
function submit(action_destination, destination_url, curr_form) {
	submit_curr_window.clearInterval(iCallbackTimer);
	if (submit_curr_document.forms[curr_form].elements[curr_app+'_submit_action'].value) {
		submit_curr_document.forms[curr_form].action = submit_curr_document.forms[curr_form].elements[curr_app+'_submit_action'].value;
	}

	for(i = 0; i < submit_curr_document.forms[curr_form].elements.length; i++) {
		var obj = submit_curr_document.forms[curr_form].elements[i];
		if (obj.type != 'hidden') {
			if ((obj.offsetWidth == 0) && (obj.offsetHeight == 0)) {
				obj.disabled = true;
			}
		}
	}

	submit_curr_document.forms[curr_form].submit();
	if (orig_action != null) submit_curr_document.forms[curr_form].action = orig_action;
	if (popup_handle) {
		if (popup_handle.closed) {
			popup_orig_module = null;
			popup_orig_action_id = null;
			popup_orig_params = null;
		}
		else {
			popup_handle.focus();
		}
	}
	submit_curr_document.forms[curr_form].target = '_self';
	if (popup_orig_module != null) {
		if (eval('submit_curr_window.onsubmit_'+function_name+'_done') != null) {
			submit_curr_window.onsubmit_main_page(popup_orig_module, popup_orig_action_id+'_done', popup_orig_params, true);
			if (popup_handle.closed) {
				popup_orig_module = null;
				popup_orig_action_id = null;
				popup_orig_params = null;
			}
			else {
				popup_handle.focus();
			}
		}
	}
	if (action_destination) {
		for (i=0; i<30000; i++) {
			for (j=0; j<10000; j++);
		}
		submit_curr_window.setTimeout('submit_curr_window.frames["'+action_destination+'"].location.href = "'+destination_url+'"; form_submitted = false; form_action_in_progress = false;', 500);
	}
}

var refresh_window = null
function refresh_page(curr_window) {
	if (!curr_window) {
		curr_window = refresh_window;
	}
	curr_window.location.href = curr_window.location.href;
}

function send_mail(email, subject, body) {
	var mailto_link = 'mailto:'+email+'?subject='+subject.replace(/\n/g, "%0D%0A")+'&body='+body.replace(/\n/g, "%0D%0A");
	var win = window.open(mailto_link, 'emailWindow');
	if (win && win.open && !win.closed) win.close();
}

function get_keycode(e) {
	if (e.keyCode) {
		kc = e.keyCode;
		shift = e.shiftKey;
		ctrl = e.ctrlKey;
		alt = e.altKey;
	}
	else {
		kc = e.which;
		if (e.modifiers) {
			shift = ((e.modifiers & Event.SHIFT_MASK) != 0);
			ctrl = ((e.modifiers & Event.CONTROL_MASK) != 0);
			alt = ((e.modifiers & Event.ALT_MASK) != 0);
		}
		else {
			shift = e.shiftKey;
			ctrl = e.ctrlKey;
			alt = e.altKey;
		}
	}
	return [kc, shift, ctrl, alt];
}

function __get_element(name, curr_document, curr_form) {
	if (!curr_document) curr_document = document;
	if (!curr_form) {
		curr_form = curr_forms[0];
	}
	var obj = curr_document.forms[curr_form].elements[name];
	if (!obj) obj = my_getElementById(name, curr_document);
	return obj;
}

function _get_element(name, curr_document, curr_form) {
	var obj = __get_element(name+'[]', curr_document, curr_form);
	if (!obj) obj = __get_element(name, curr_document, curr_form);
	return obj;
}

function get_element(name, curr_document, curr_form) {
	var obj = _get_element(name, curr_document, curr_form);
	if (!obj) {
		var tmp;
		obj = new Array();
		tmp_obj = _get_element(name+'_HH', curr_document, curr_form); if (tmp_obj) obj.push(tmp_obj);
		tmp_obj = _get_element(name+'_MI', curr_document, curr_form); if (tmp_obj) obj.push(tmp_obj);
		tmp_obj = _get_element(name+'_SS', curr_document, curr_form); if (tmp_obj) obj.push(tmp_obj);
	}
	return obj;
}

function process_element_value(flags, value) {
	if ((flags.indexOf('EMPTYISNULL') >= 0) && (value == '')) value = null;
	return value;
}

function get_element_value(element_name, func_code, array_as_obj, curr_document, curr_form) {
	var element = get_element(element_name, curr_document, curr_form);
	var value = null;
	if (element) {
		var is_default_element = (element_name.substr(element_name.length-8) == '_default');
		var is_null_element = (element_name.substr(element_name.length-5) == '_null');
		var null_value = is_null_element ? false : get_element_value(element_name+'_null');
		if (!null_value || (null_value != '1')) {
			var type = get_element_type(element);
			flags = ((type != 'hidden') && !is_null_element && !is_default_element) ? get_element_info('flags', element_name, '') : '';
			switch (type) {
				case 'file':
					value = process_element_value(flags, trim(element.value));
					break;	
				case 'text':
				case 'password':
				case 'hidden':
				case 'textarea':
					value = process_element_value(flags, trim(element.value));
					break;	
				case 'checkbox':
					if (element.length && (element.length > 0))	{
						value = new Array();
						for(var i = 0; i < element.length; i++) {
							if (element[i].checked)	{
								value[value.length] = process_element_value(flags, element[i].value);
							}
						}
						if (value.length == 0) value = null;
					}
					else {
						if (element.checked) {
							value = process_element_value(flags, element.value);
						}
					}
					if (value == null) {
						value = get_element_value(element_name+'_default');
					}
					break;
				case 'radio':
					if (element.length && (element.length > 0))	{
						for(var i = 0; i < element.length; i++) {
							if (element[i].checked)	{
								value = process_element_value(flags, element[i].value);
								break;
							}
						}
					}
					else {
						if (element.checked) {
							value = process_element_value(flags, element.value);
						}
					}
					if (value == null) {
						value = get_element_value(element_name+'_default');
					}
					break;
				case 'select':
					value = process_element_value(flags, element.options[element.selectedIndex].value);
					break;
			}
			if ((flags.indexOf('ASK2FILL') >= 0) && (value == null)) {
				value = "\0";
			}
		}
	}
	if (array_as_obj) {
		var o = {};
		if (value) {
			if (value.length && (value.length > 0)) {
				for (var i = 0; i < value.length; i++) o[value[i]] = '';
			}
			else {
				o[value] = '';
			}
		}
		value = o;
	}
	if (func_code == 'l') value = value ? value.length : 0; 
	return value;
}

// mode = 1 : clear
//        2 : invert
function set_element_value(element_name, value, clear, invert) {
	var element = get_element(element_name);
	if (!element) return;
	var type = get_element_type(element);
	switch (type) {
		case 'file':
		case 'text':
		case 'password':
		case 'hidden':
		case 'textarea':
			if (element.length > 0) {
				element = element[0];
			}
			element.value = (value == null) ? '' : value;
			if (type == 'file') {
				if (flag_niceforms) NFFix();
			}
			break;
		case 'radio':
			if (element.length && (element.length > 0))	{
				for(var i = 0; i < element.length; i++) {
					if (value == element[i].value) {
						element[i].checked = true;
						break;
					}
				}
			}
			else {
				if (value == element.value) {
					element.checked = true;
				}
			}
			break;
		case 'checkbox':
			if (element.length && (element.length > 0))	{
				for(var i = 0; i < element.length; i++) {
					state = (value == element[i].value);
					b_val = state;
					if (invert) state = !state;
					if (clear) b_val = state ? false : element[i].checked;
					element[i].checked = b_val;
				}
			}
			else {
				state = (value == element.value);
				b_val = state;
				if (invert) state = !state;
				if (clear) b_val = state ? false : element.checked;
				element.checked = b_val;
			}
			break;
		case 'select':
			if (element.options.length > 0) {
				for(var i = 0; i < element.options.length; i++) {
					if (element.options[i].value == value) {
						element.selectedIndex = i;
						break;
					}
				}
			}
			break;
		default:
			//for(var i = 0; i < window.frames.length; i++) alert(i+':'+window.frames[i].name+':'+element_name);
			//alert('a:'+window.frames[element_name]);
			//alert('b:'+window.frames[0]);
			//window.frames[element_name].document.body.innerHTML = value;
			window.frames[element_name].document.open();
			window.frames[element_name].document.write(value);
			window.frames[element_name].document.close();
			break;
	}
}

function update_element(orig_field_name, linked_field_name, map_name) {
	//alert('update_element:'+orig_field_name+' => '+linked_field_name);
	var value = get_element_value(orig_field_name);
	if (!map_name) map_name = linked_field_name;
	var map = eval('typeof(map___' + map_name + ') == "undefined" ? null : map___' + map_name);
	if (map) {
		var linked_obj = get_element(linked_field_name);
		var linked_type = get_element_type(linked_obj);
		if (linked_type == 'select') {
			var flags = get_element_info('flags', linked_field_name, '');
			var orig_id = (linked_obj.selectedIndex >= 0) ? linked_obj.options[linked_obj.selectedIndex].value : null;
			var new_idx = 0;
			//alert('linked obj:'+linked_field_name+', len: '+linked_obj.options.length);
			//linked_obj.options.length = ((linked_obj.options.length == 0) || (linked_obj.options[0].value != "") || ((linked_obj.options[0].value == "") && (linked_obj.options.length == 1))) ? 0 : 1;
			//a harmadik feltetel akkor lenne igaz, ha nem lehet empty a field
			linked_obj.options.length = ((linked_obj.options.length == 0) || (linked_obj.options[0].value != "")) ? 0 : 1;
			//alert('linked obj:'+linked_field_name+', len: '+linked_obj.options.length);
			for(var i in map) {
				if ((value == map[i][1]) || (map[i][1] === '')) {
					//alert('orig field:'+orig_field_name+', linked field:'+linked_field_name+', linked length: '+linked_obj.options.length+', inserted linked item: '+map[i][2]);
					if (orig_id == map[i][0]) new_idx = linked_obj.options.length;
					linked_obj.options[linked_obj.options.length] = new Option(map[i][2].replace(/ /g, '\u00A0'), map[i][0]);
				}
			}
			linked_obj.selectedIndex = new_idx;
			flag_niceforms_needupdate = true;
		}
	}
	if (flag_niceforms && flag_niceforms_needupdate) setTimeout('NFFix();', 10);
}

function set_element_focus(element_name, flag, blur) {
	for (var i = 0; (i < document.forms[curr_form].length) && (get_element_name(document.forms[curr_form][i]) != element_name); i++);
	re = /^(.*)___(.*)$/;
	element_arr = re.exec(element_name);
	if (flag != 'next')	{
		element = document.forms[curr_form][i];
	}
	else {
		for (; (i < document.forms[curr_form].length) && (get_element_name(document.forms[curr_form][i]) == element_name); i++);
		if (!element_arr) {
			module_name = '';
		}
		else {
			module_name = element_arr[1];
		}
		module_name_length = module_name.length;
		for (; i < document.forms[curr_form].length; i++) {
			if ((document.forms[curr_form][i].type != 'hidden') && (get_element_name(document.forms[curr_form][i]).substr(0, module_name_length) == module_name)) {
				element = document.forms[curr_form][i];
				break;
			}
		}
	}
	switch (get_element_type(element)) {
		case 'text':
		case 'password':
		case 'checkbox':
		case 'textarea':
		case 'file':
		case 'radio':
			if (element.length > 0) {
				element = element[0];
			}
		case 'select':
			var obj = my_getElementById('notnull_'+element_name);
			if (!obj || (my_getDisplay(obj) != 'none')) {
				if (element.offsetWidth) {
					if (blur) {
						element.blur();
					}
					else {
						element.focus();
					}
				}
			}
			break;	
	}
}

function _set_element_events(element, ptr_function) {
	if (element) {
		element.onfocus = ptr_function;
		element.onblur = ptr_function;
		element.onchange = ptr_function;
		element.onclick = ptr_function;
		element.onkeyup = ptr_function;
		element.ondragenter = cancel_event;
		element.ondragover = cancel_event;
		element.ondrop = cancel_event;
	}
}

function set_element_events(element_name, ptr_function) {
	var obj = get_element(element_name);
	if (obj) {
		var type = get_element_type(obj);
		//if (((!type) || (type && (type[0] == '_'))) && obj.length && (obj.length > 0)) { 
		if ((type != 'select') && obj.length && (obj.length > 0)) { 
//			alert(type);
			for(var i = 0; i < obj.length; i++) { 
				_set_element_events(obj[i], ptr_function);
			}
		}
		else {
			_set_element_events(obj, ptr_function);
		}
	}
}

function get_element_type(element) {
	if (!element) return;
	if (element.options) {
		return 'select';
	}
	if (element.length && (element.length > 0))	{
		return element[0].type;
	}
	return element.type;
}

function get_element_name(element) {
	var name = '';
	if (element.name) {
		name = element.name;
	}
	else {
		if (element.length && (element.length > 0))	{
			name = element[0].name;
		}
	}
	name = name.replace(/\[\]$/, '');
	return name.replace(/#[^#]+$/, '');
}

function get_element_info(type, element_name, id) {
//	return eval('(window.validate_'+element_name+' != null) ? '+type+'_'+element_name+'_'+id+' : ""');
	return eval('window.'+type+'_'+element_name+'_'+id+' ? '+type+'_'+element_name+'_'+id+' : ""');
}

function set_element_flag(element_name, flag, value) {
	if (flag == 'REQUIRES') {
		requirements[element_name] = new Array();
		if (value) {
			reqs_array = value.split(':');
			for(var i=0; i < reqs_array.length; i++) {
				reqs = reqs_array[i].split('/');
				requirements[element_name][i] = new Object;
				requirements[element_name][i]['at_least'] = value ? reqs.shift() : 0;
				requirements[element_name][i]['of'] = reqs;
			}
		}
	}
	else if (flag == 'ENABLED') {
		toggle_item('field', element_name, value == 'yes' ? '' : (value.substr(0, 2) == 'no' ? 'none' : (!value ? false : value)), value != 'no*');
	}
	else if (flag == 'EDIT') {
		var obj = get_element(element_name);
		obj.disabled = (value == 'no');
		flag_niceforms_needupdate = true;
	}
	else {
		var flags = eval('flags_'+element_name+'_');
		flags = flags.replace(new RegExp('[|]?'+flag+'($|[|])'), '');
		flags += (1*value ? '|'+flag : '');
//		alert('flags_'+element_name+'_="'+flags+'";');
		eval('flags_'+element_name+'_="'+flags+'";');
	}
}

function trim(value) {
	value = value.replace(/^\s+/, '');
	return value.replace(/\s+$/, '');
}

function remove(value, chr) {
	return value.replace(new RegExp('['+chr+'].*?$'), '');
}

function expand_all(module, prefix, state) {
	var orig_flag_niceforms = flag_niceforms;
	flag_niceforms = false;
	var tags_img = document.getElementsByTagName("img");
	var prefix_1 = 'img___' + module + '_';
	var prefix_2 = prefix_1 + prefix;
	for (var i = 0; i < tags_img.length; i++) {
		if (tags_img[i].id.substr(0, prefix_2.length) == prefix_2) {
			expand(module, tags_img[i].id.substr(prefix_1.length), state);
		}
	}
	if (orig_flag_niceforms && flag_niceforms_needupdate) NFFix();
	flag_niceforms = orig_flag_niceforms;
}

function expand(module, id, state) {
	if (state === false) {
		state = 'none';
	}
	else if (state === true) {
		state = '';
	}
	else {
		state = false;
	}
	var flag = id.substr(0, 1);
	var display = toggle_item(flag != '_' ? 'block' : 'field', flag != '_' ? module+'_'+id : module+id, state);
	if (display != null) {
		if (flag != '_') {
			var img_obj = my_getElementById('img___' + module + '_' + id);
			img_obj.src = (display == 'none') ? eval('expand___' + module + '_' + id + '[0]') : eval('expand___' + module + '_' + id + '[1]');
		}
		set_element_value(module + ((flag != '_') ? '___state_' + id : '___state' + id), (display == 'none') ? '' : '1');
	}
	if (flag_niceforms && flag_niceforms_needupdate) NFFix();
	return display;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////

function getObj(name) {
	var obj;
	if (document.getElementById){
		if (obj = document.getElementById(name)) {
			this.obj = obj;
			this.style = obj.style;
		}
	}
	else if (document.all) {
		if (obj = document.all[name]) {
			this.obj = obj;
			this.style = obj.style;
		}
	}
	else if (document.layers) {
		if (obj = getObjNN4(document, name)) {
			this.obj = obj;
			this.style = obj;
		}
	}
}

function getObjNN4(obj, name) {
	var x = obj.layers;
	var foundLayer;
	for (var i = 0; i < x.length; i++) {
		if (x[i].id == name)
		 	foundLayer = x[i];
		else if (x[i].layers.length)
			var tmp = getObjNN4(x[i], name);
		if (tmp) foundLayer = tmp;
	}
	return foundLayer;
}

function my_setPosition(obj, left, top) {
	if (!obj) return;
	var noPx = document.childNodes ? 'px' : 0;
	if (left != null) obj.style.left = left + noPx;
	if (top != null) obj.style.top = top + noPx;
}

function my_setVisibility(obj, visibility) {
	if (!obj) return;
	if (obj.style) {
		obj.style.visibility = visibility ? 'visible' : 'hidden';
	}
	else {
		obj.visibility = visibility ? 'show' : 'hide';
	}
}

function my_getMousePosition(e, div) {
	var posx = 0;
	var posy = 0;
	var maxx = 0;
	var maxy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY)
	{
		posx = e.pageX;
		posy = e.pageY;
        maxx = (div ? div.scrollWidth : window.innerWidth) + window.pageXOffset;
        maxy = (div ? div.scrollHeight : window.innerHeight) + window.pageYOffset;
	}
	else if (e.clientX || e.clientY)
	{
		posx = e.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) - document.body.clientLeft;
		posy = e.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) - document.body.clientTop;
        maxx = document.body.clientWidth + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
        maxy = document.body.clientHeight + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
	}
	return [posx, posy, maxx, maxy];
}

function get_obj_x(obj) {
	if (!obj) return null;
	var x = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			x += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x) {
		x = obj.x;
	}
	return x;
}

function get_obj_y(obj) {
	if (!obj) return null;
	var y = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			y += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y) {
		y = obj.y;
	}
	return y;
}

function my_getbgColor(obj) {
	var orig_color = '';
	if (obj) {
		if (obj.style) {
			obj = obj.style;
		}

		if (obj.bgColor) {
			orig_color = obj.bgColor;
		}
		else if (obj.background) {
			orig_color = obj.background;
		}
		else if (obj.backgroundColor) {
			orig_color = obj.backgroundColor;
		}
	}
	return orig_color;
}

function my_setbgColor(obj, color) {
	var orig_color = my_getbgColor(obj);
	if (obj) {
		if (obj.style) {
			obj = obj.style;
		}

		obj.bgColor = color;
		if (obj.background)	obj.background = color;
		obj.backgroundColor = color;
	}
	return orig_color;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////


function my_getElementById(id, curr_document) {
	var obj = null;
	if (!curr_document) {
		curr_document = document;
	}
	if (curr_document.getElementById) {
//		obj = curr_document.getElementsByName(id);
		obj = curr_document.getElementById(id);
	} 
	else if (curr_document.all) {
		obj = curr_document.all[id];
	}
	return obj;
}

function my_getDivById(id, doc) {
	var obj = my_getElementById(id, doc);
	if (obj) {
		return obj;
	}
	if (!doc) {
		doc = document;
	}
	if (document.layers) {
		if (doc.layers[id]) {
			return doc.layers[id];
		} 
		else {
			for (var x = 0, y; !y && x < doc.layers.length; x++) {
				y = my_getDivById(id, doc.layers[x].document);
			}
			return y;
		} 
	}
	return obj;
}

function my_getSize(obj) {
	var x = 0;
	var y = 0;
	if (obj) {
		x = obj.offsetWidth;
		y = obj.offsetHeight;
	}
	return [x, y];
}

function my_setSize(obj, x, y, percentage) {
	if (obj) {
		if (y < 0) {
			y = 0;
		}
		else if (y > 32767 - 40) {
			y = 32767 - 40;
		}
		if (x < 0) {
			x = 0;
		}
		else if (x > 32767 - 40) {
			x = 32767 - 40;
		}
		if (obj.resizeTo) {
			obj.resizeTo(x, y);
		}
		if (obj.style) {
			obj = obj.style;
		}
		var noPx = (document.childNodes && !percentage) ? 'px' : 0;
		if (x != null) {
			obj.width = x + noPx + (percentage ? "%" : '');
			if (!percentage) obj.pixelWidth = x;
		}
		if (y != null) {
			obj.height = y + noPx + (percentage ? "%" : '');
			if (!percentage) obj.pixelHeight = y;
		}
	}
	if (flag_niceforms) {
		setTimeout('NFFix();', 10);
	}
}

function my_setzIndex(obj, zIndex) {
	if (obj) {
		if (obj.style) {
			obj = obj.style;
		}
		obj.zIndex = zIndex;
	}
}

function my_setDisplay(obj, display) {
	if (obj) {
		if (obj.style) {
			obj = obj.style;
		}
		if (typeof(obj.display) == 'undefined') {
			return;
		}
		obj.display = display;
	}
}

function my_getDisplay(obj) {
	if (obj) {
		if (obj.style) {
			obj = obj.style;
		}
		if (typeof(obj.display) == 'undefined') {
			return null;
		}
		return obj.display;
	}
	return null;
}

function my_setAttribute(obj, attr_name, attr_value) {
	if (obj) {
		obj.setAttribute(attr_name, attr_value);
		obj.setAttribute(attr_name + 'Name', attr_value);		// ie6
	}
}

function my_getAttribute(obj, attr_name) {
	ret = null;
	if (obj) {
		var ret = obj.getAttribute(attr_name);
		if (ret == null) {
			if (obj.getAttributeNode(attr_name)) {
				ret = obj.getAttributeNode(attr_name).value;
			}
		}
	}
	return ret;
}

var enabled_last_state = new Object;
var display_dependency = new Object;
function toggle_item(type, name, display, save_state, curr_document) {
	var full_name = type ? type+'___'+name : name;
	var obj = my_getElementById(full_name, curr_document);
	if (obj) {
		orig_display = my_getDisplay(obj);
		if (save_state === '?') return orig_display;
		if (display === false) {
			display = (orig_display == 'none') ? '' : 'none';
		}
		if (display == 'restore') {
			display = typeof(enabled_last_state[full_name]) == 'undefined' ? orig_display : enabled_last_state[full_name];
//			alert(full_name+' state restored:'+display+'/'+orig_display);
		}
		my_setDisplay(obj, display);
		flag_niceforms_needupdate = true;
		if (save_state) {
//			alert(full_name+' state saved:'+display+'/'+orig_display);
			enabled_last_state[full_name] = display;
		}
		if (display_dependency[full_name]) {
			for(var i = 0; i < display_dependency[full_name].length; i++) {
				var tmp_name = display_dependency[full_name][i].split('___');
				toggle_item(tmp_name[0], display_dependency[full_name][i].substr(tmp_name[0].length+3), display, save_state, curr_document);
			}
		}
		if (flag_niceforms && flag_niceforms_needupdate) NFFix();
		onresize_main_page(null, window, document);
		return display;
	}
	if (type == 'block') {
		return toggle_item('div', name, display, save_state, curr_document);
	}
	return null;
}

function set_checkbox(mode, element) {
	var value = !element.checked;
	if (mode == 'all') value = true; else if (mode == 'none') value = false;  
	element.checked = value;
}

function list_selection(mode, list_id, start, max) {
	var element = document.forms[curr_form][list_id];
	if (!element) return false;
	if (element.length) {
		for(var i = 0; (i < element.length) && (i < max); i++) {
			if (i >= start) {
				set_checkbox(mode, element[i]);
			}
		}
	}
	else {
		set_checkbox(mode, element);
	}
	if (flag_niceforms) NFFix();
	return false;
}

function set_process_status(status, referer, stop, resubmit) {
	var obj = my_getElementById('process_status_'+referer);
	var parent_obj = obj;
	do {
		if (!parent_obj) break;
		parent_obj = parent_obj.parentNode;
	}
	while (!parent_obj.id);
	var prefix = '';
	var postfix = '';
	switch (status) {
		case 'not executed':
			prefix = '<span style="color: #888888;">';
			postfix = '</span>';
			break;
		case 'running':
			prefix = '<span style="color: #dd0000;">';
			postfix = '</span>' + (stop ? '&nbsp;<input type="button" value="STOP" onclick="set_process_status(\'terminating...\', \''+referer+'\'); window.frames[\'process_log_'+referer+'\'].location.href=\'?URL=__'+(resubmit ? '*' : '')+'!'+(stop ? '' : '^')+referer+'\'; return false;">' : '');
			if (parent_obj) {
				my_setDisplay(parent_obj, '');
			}
			break;
		case 'executed':
			prefix = '<span style="color: #00ff00;">';
			postfix = '</span>';
			break;
		case 'terminating...':
			break;
		case 'error':
			prefix = '<span style="color: #dd0000;">';
			postfix = '</span>';
			if (parent_obj) {
				my_setDisplay(parent_obj, '');
			}
			break;
	}
	if (obj) {
		obj.innerHTML = prefix + eval('lang["'+status+'"]') + postfix;
	}
}

function onclick_cell(type, row_id, col_id) {
	if (type == 'matrix') {
		if (typeof("_onclick_cell") != "undefined") _onclick_cell(row_id, col_id);
	}
	if (flag_niceforms) NFFix();
}

function go2eof(frame_name) {
	if (window.frames[frame_name].go2eof) window.frames[frame_name].go2eof();
}

////////////////////////////////////////////////////////////////////////////////////////

// Image Preloader
function ImagePreloader(images, callback) {
	// store the callback
	this.callback = callback;

	// initialize internal state.
	this.nLoaded = 0;
	this.nProcessed = 0;
	this.aImages = new Array;

	// record the number of images.
	this.nImages = images.length;

	// for each image, call preload()
	for ( var i = 0; i < images.length; i++ ) 
		this.preload(images[i]);
}

ImagePreloader.prototype.preload = function(image) {
	// create new Image object and add to array
	var oImage = new Image;
	this.aImages.push(oImage);
	
	// set up event handlers for the Image object
	oImage.onload = ImagePreloader.prototype.onload;
	oImage.onerror = ImagePreloader.prototype.onerror;
	oImage.onabort = ImagePreloader.prototype.onabort;
	
	// assign pointer back to this.
	oImage.oImagePreloader = this;
	oImage.bLoaded = false;
	oImage.source = image;
	
	// assign the .src property of the Image object
	oImage.src = image;
}

ImagePreloader.prototype.onComplete = function() {
	this.nProcessed++;
	if ( this.nProcessed == this.nImages )
		this.callback(this.aImages);
}

ImagePreloader.prototype.onload = function() {
	this.bLoaded = true;
	this.oImagePreloader.nLoaded++;
	this.oImagePreloader.onComplete();
}

ImagePreloader.prototype.onerror = function() {
	this.bError = true;
	this.oImagePreloader.onComplete();
}

ImagePreloader.prototype.onabort = function() {
	this.bAbort = true;
	this.oImagePreloader.onComplete();
}

function copyToClipboard(inElement) {
	if ((1==2) && (inElement.createTextRange)) {
		var range = inElement.createTextRange();
		if (range && BodyLoaded==1) range.execCommand('Copy');
	} else {
		var flashcopier = 'flashcopier';
		if (!document.getElementById(flashcopier)) {
			var divholder = document.createElement('div');
			divholder.id = flashcopier;
			document.body.appendChild(divholder);
		}
		document.getElementById(flashcopier).innerHTML = '';
		//var divinfo = '<embed src="'+curr_img_common_path+'_clipboard.swf" FlashVars="clipboard='+encodeURIComponent(inElement.value)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
		var divinfo = '<embed src="'+curr_img_common_path+'_clipboard.swf" FlashVars="clipboard='+encodeURIComponent(inElement)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
		document.getElementById(flashcopier).innerHTML = divinfo;
	}
}

function _move_slidebar(x) {
	my_setPosition(moved_obj[moved_obj_name].obj, x);
	document.forms[curr_form].elements[moved_obj_name].value = Math.round((x - moved_obj[moved_obj_name].x_min) / 6.04);
	moved_obj[moved_obj_name].obj.innerHTML = '<div class="slidebar_pointer_text">' + document.forms[curr_form].elements[moved_obj_name].value + '</div>';
}
function move_slidebar(e) {
	var pos = my_getMousePosition(e);
	pos[0] = pos[0] - 11;
	if (pos[0] < moved_obj[moved_obj_name].x_min) pos[0] = moved_obj[moved_obj_name].x_min;
	if (pos[0] > moved_obj[moved_obj_name].x_max) pos[0] = moved_obj[moved_obj_name].x_max;
	_move_slidebar(pos[0]);
}

var moved_obj = new Object;
var moved_obj_name = null;
function move_pointer(obj_name, init, event) {
	if (init && moved_obj[obj_name]) return;
	if (moved_obj_name) {
		document.onmousemove = null;
		window.onscroll = null;
		moved_obj[moved_obj_name].obj.onclick = moved_obj[moved_obj_name].onclick;
		moved_obj_name = null;
	}
	else if (document.forms[curr_form].elements[obj_name]) {
		moved_obj_name = obj_name;
		if (!moved_obj[moved_obj_name]) {
			moved_obj[moved_obj_name] = new Object;
			moved_obj[moved_obj_name].obj = my_getElementById(obj_name);
			moved_obj[moved_obj_name].x = get_obj_x(moved_obj[moved_obj_name].obj);
			moved_obj[moved_obj_name].y = get_obj_y(moved_obj[moved_obj_name].obj)-27;
			document.forms[curr_form].elements[moved_obj_name].value *= 1;
			moved_obj[moved_obj_name].x_min = moved_obj[moved_obj_name].x + 5;
			moved_obj[moved_obj_name].x_max = moved_obj[moved_obj_name].x_min + 604;
			my_setPosition(moved_obj[moved_obj_name].obj, null, moved_obj[moved_obj_name].y);
		}
		_move_slidebar(moved_obj[moved_obj_name].x_min + document.forms[curr_form].elements[moved_obj_name].value * 6.04);
		my_setVisibility(moved_obj[moved_obj_name].obj, true);
		document.onmousemove = move_slidebar;
		window.onscroll = move_slidebar;
		moved_obj[moved_obj_name].onclick = moved_obj[moved_obj_name].obj.onclick;
		moved_obj[moved_obj_name].obj.onclick = move_pointer;
		if (init) move_slidebar(event);
	}
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			   string: navigator.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

