//--- session heelp alive functions
var session_keepalive_inverval = 25 * 60 * 1000;
var session_keepalive_counter = 0;
function session_keepalive() {
	session_keepalive_counter ++ ;

	var chunk = document.getElementById('session_keepalive_image');
	if (chunk) { chunk.src = basehref+'online/session_keepalive.comp?sid='+_session_id+'&forumid='+forumid+'&counter=' + session_keepalive_counter; }

	setTimeout("session_keepalive()", session_keepalive_inverval);
}
if (globalSessionKeepAlive) {
	setTimeout("session_keepalive()", session_keepalive_inverval);
}

//--- some layer magick
function toggleElements(mainelementid,attribute, value){
	var elements = $(mainelementid).getElementsBySelector('['+attribute+'="'+value+'"]');
	elements.each(function(item) {
		item.toggle();
  	});
}

function toggleElement(layerid){
	$(layerid).toggle();
}

function showhideLayer(layerId, show, movehorizontal, movevertical){
	var l = document.getElementById(layerId);
	if (show) {
		l.style.display = 'block';
	} else {
		l.style.display = 'none';
	}
}

//--- generic old and not that old FCS popups.
function popup(url) {window.open(basehref+url, '', 'width=350,height=350,menubar=no,scrollbars=yes,toolbars=no')}
function popup_fixed(url, name, w, h) { window.open(basehref+url, name, 'width='+w+',height='+h+',menubar=no,scrollbars=yes,toolbars=no')}
function factwindow(url) { window.open(basehref+url, "online", "height=400,width=350,directories=no,location=no,menubar=no,resizeable=yes,status=no,toolbar=no,scrollbars=yes"); }
function popsuche(url){ window.open(basehref+url,"suchergebnis_e1","width=770,height=500,menubar=no,scrollbars=yes,location=no,toolbars=no"); }
function bla() { popsuche('search/search.htm?forumid=' + forumid + '&string='+document.bl.string.value) }

var FACTTEXTLOADED = 0;

//--- language translation thing
function pmtr(wo) {
	window.open(basehref+'multilanguage/textlabel.htm?label='+wo+'&forumid='+forumid, 'labels', 'width='+550+',height='+450+',menubar=no,scrollbars=yes,toolbars=no');
	return false;
}

//--- cache images needed for the translations?
var tZr91 = new Image(); tZr91.src = basehref + 'images/translationinterfacebutton.gif';
var tZr92 = new Image(); tZr92.src = basehref + 'images/translationinterfacebutton_done.gif';
var tZr93 = new Image(); tZr93.src = basehref + 'images/translationinterfacebutton_missing.gif';

//--- the delete popup
function delete_popup(delete_eidie) {
	delete_URL = "facts/edit/delete.htm?"+delete_eidie;	
	window.open(basehref+delete_URL, "delete_window", "height=180,width=300,directories=no, location=no,resizeable=no,status=no,toolbar=no,scrollbars=no,menubar=no");
}

//--- e-mail magick
if (knillimae) {
	Event.observe(window, 'load', function(e) {
		var aas = document.getElementsByTagName('a');
		for (var i=0; i<aas.length; i++) {
			if (aas[i].className == 'knillimae') {
				var content = aas[i].innerHTML;
				content = content.replace(/^\[(.+?)\]at\[(.+?)\]dot\[(.+?)\]$/i, '$1@$2.$3');
				aas[i].innerHTML = content;
				aas[i].href = 'mai' + 'lt' + 'o:' + content;
				aas[i].title = 'mai' + 'lt' + 'o:' + content;
			}
		}
	});
};

//--- read statistics goodies
function readstats_switchtab(contentdiv, id, v) {
	if (!v || v == null) {
		v = 0;
	}

	var firsttab = $(contentdiv + '_tab_all');
	var allopentabs = $$('td.rs_tab_next_open');

	if (v == 0) {
		firsttab.className = 'rs_tab_first_open';
	} else {
		firsttab.className = 'rs_tab_first';
		var newversiontab = $(contentdiv + '_tab_' + v);
		if (newversiontab) {
			newversiontab.className = 'rs_tab_next_open';
		}
	}

	for (var i=0; i<allopentabs.length; i++) {
		if (allopentabs[i].id.match(contentdiv)) {
			allopentabs[i].className = 'rs_tab_next';
		}
	}


	$(contentdiv).update('<div style="padding-left: 10px; padding-right: 10px; text-align: center;">&nbsp;<br><img src="/images/loading.gif" width=32 height=32 alt="" border=0><br>&nbsp;</div>');

	var req = new Ajax.Request(basehref + "lib/reads_getcontent.comp", {
			method:'get',
			parameters: { forumid:forumid, id:id, v:v, ajax:1, contentdivid:contentdiv },
			
		    onComplete: function(transport){	
				text = transport.responseText;
				$(contentdiv).update(text);
		    },
		    onFailure: function() { 
				$(contentdiv).update('Could not complete ajax request');
			}
		  });
	return;
}

function readstats_viewusers(contentdiv, id, v) {
	if (!v || v == null) {
		v = 0;
	}

	var divtoupdate = $(contentdiv + '_userlist');

	if (divtoupdate.innerHTML == '' || divtoupdate.innerHTML == null) {
		divtoupdate.update('<div style="padding-left: 10px; padding-right: 10px; text-align: center;">&nbsp;<br><img src="/images/loading.gif" width=32 height=32 alt="" border=0><br>&nbsp;</div>');
		divtoupdate.show();

		var req = new Ajax.Request(basehref + "lib/reads_getcontent.comp", {
			method:'get',
			parameters: { forumid:forumid, id:id, v:v, ajax:1, viewusers:1, contentdivid:contentdiv },

			onComplete: function(transport){	
				text = transport.responseText;
				divtoupdate.update(text);
			},
				onFailure: function() { 
				divtoupdate.update('Could not complete ajax request');
			}
		});
	} else {
		divtoupdate.update('');
		divtoupdate.hide();
	}
	return;
}

function readstats_show(contentdiv, id, v) {
	var divtoupdate = $(contentdiv + '_top');

	if (divtoupdate.innerHTML == '' || divtoupdate.innerHTML == null) {
		divtoupdate.update('<div style="padding-left: 10px; padding-right: 10px; text-align: center; width: 560px;">&nbsp;<br><img src="/images/loading.gif" width=32 height=32 alt="" border=0><br>&nbsp;</div>');
		divtoupdate.show();

		var req = new Ajax.Request(basehref + "lib/reads.comp", {
			method: 'get',
			parameters: { forumid:forumid, id:id, v:v, ajax:1, contentdivid:contentdiv, isincluded:0 },

			onComplete: function(transport){	
				text = transport.responseText;
				divtoupdate.update(text);
			},
			onFailure: function() { 
				divtoupdate.update('Could not complete ajax request');
			}
		});
	} else {
		divtoupdate.update('');
		divtoupdate.hide();
	}
	return;
}


//---------------------------------------------------------------------
function showReferersFull(id, v) {
	var contentdiv = $('facttagstargets_' + id + '_' + v);
	if (contentdiv) {
		contentdiv.update('<div style="padding-left: 10px; padding-right: 10px; border: 1px solid #EEEEEE; text-align: center; width: 560px;">&nbsp;<br><img src="/images/loading.gif" width=32 height=32 alt="" border=0><br>&nbsp;</div>');

		var req = new Ajax.Request(basehref + "lib/show_facttagstargets.comp", {
			method:'get',
			parameters: {
				forumid			: forumid,
				id				: id,
				v				: v,
				all				: 1,
				useajax			: 1
			},			
		    onComplete: function(transport){	
				text = transport.responseText;
				contentdiv.update(text);
		    },
		    onFailure: function() { 
				alert('Could not complete ajax request');
			}
		});
	}
}


function open_myunpuiblishedversions_more(linkage) {
	$('myunpuiblishedversions_more').show();
	$('myunpuiblishedversions_morelink').hide();
}


function qanda_switchsearchform() {
	$('qanda_searchdiv').toggle();
	$('qanda_searchbutton_search').toggle();
	$('qanda_searchbutton_filter').toggle();

	$('qanda_gobutton').value = $('qanda_searchdiv').visible() ? "Search" : "Filter";
	if ($('qanda_searchdiv').visible()) {
		$('filterform').keyword.value = '';
		categoryselector.resetForm();
	}
}

function qanda_resetsearchform() {
	categoryselector.resetForm();
	$('filterform').keyword.value = '';
	$('filterform').ordertmp.value = 'questiondate_desc';
	$('filterform').questionpriority.value = '';
	$('filterform').status.value = '';	
}


//--- permissions selectors functions
function changeSame(obj){
	var cClass = obj.className;
	//alert(cClass);
	var all = $$('.' + cClass);
	for (var i = 0; i < all.length; i++) {
		if(all[i].id == obj.id){
			all[i].checked = obj.checked;
		}
	}
}


//--- default permissionsis inside the folder forms
function show_folderdefaultpermissions(onoroff, id, v) {
	var container = $('folderdefaultpermissions');
	if (onoroff == 1) {
		if (container.innerHTML == '') {
			var req = new Ajax.Request(basehref + "edit/form2/permissions.comp", {
				method:'get',
				parameters: { forumid:forumid, parent_id:id, parent_v:v, prefix:'fdp', doctype:'factfolder', nomandatory:1, ajax:1 },
				onComplete: function(transport){	
					text = transport.responseText;
					container.update(text);
					container.show();
				},
				onFailure: function() { 
					container.update('Could not complete ajax request');
				}
			});
		} else {
			container.show();
		}
	} else {
		container.hide();
	}
}

//--- current permissions (info box), open all
function currentpermissions_showall(c) {
	var all = $$('.' + c);
	for (var i = 0; i < all.length; i++) {
		all[i].show();
	}
	var alinks = $$('.' + c + '_link');
	for (var i = 0; i < alinks.length; i++) {
		alinks[i].hide();
	}
}

//--- europass temporary javascript
var epcv_formopen = false;
function epcv_editelement(id, v, element, divtouse, formcontrolname, displaycontrolname, a, goforit) {
	if (epcv_formopen) {
		alert('Please close the other open forms to contine.');
		return;
	}
	var cdiv = $(divtouse);

	if (!goforit) {
		cdiv.update('<div style="padding-left: 10px; padding-right: 10px; text-align: center;">&nbsp;<br><img src="/images/loading.gif" width=32 height=32 alt="" border=0><br>&nbsp;</div>');
		checkSession('epcv_editelement(\''+id+'\', \''+v+'\', \''+element+'\', \''+divtouse+'\', \''+formcontrolname+'\', \''+displaycontrolname+'\', \''+a+'\', 1)', false);
		return;
	} else {

	}

	epcv_formopen = true;
	

	var req = new Ajax.Request(basehref + "europasscv/forms/" + formcontrolname + ".comp", {
		method:'get',
		parameters: { forumid:forumid, id:id, v:v, element:element, divtouse:divtouse, formcontrolname:formcontrolname, displaycontrolname:displaycontrolname, a:a, ajax:1 },
		onComplete: function(transport){	
			text = transport.responseText;
			cdiv.update(text);
			if (tinyMCE && simpleTinyMceOptions) { 
				var nodes = $A(cdiv.getElementsByTagName('textarea')).map(Element.extend);

				for (var i = 0; i < nodes.length; i++)	{
					if (nodes[i].className == 'simpletinymce' && nodes[i].id) {
						if (!tinyMCE.get(nodes[i].id)) {
							tinyMCE.execCommand('mceAddControl', false, nodes[i].id);
						}
					}
				}
				//tinyMCE.init(simpleTinyMceOptions);
			}
		},
		onFailure: function() { 
			epcv_formopen = false;
			cdiv.update('Could not complete ajax request');
		}
	});
}
function epcv_moveelement(id, v, element, divtouse, formcontrolname, displaycontrolname, a) {
	var cdiv = $(divtouse);
	cdiv.update('<div style="padding-left: 10px; padding-right: 10px; text-align: center;">&nbsp;<br><img src="/images/loading.gif" width=32 height=32 alt="" border=0><br>&nbsp;</div>');

	var req = new Ajax.Request(basehref + "europasscv/actions/" + formcontrolname + ".comp", {
		method:'get',
		parameters: { forumid:forumid, id:id, v:v, element:element, divtouse:divtouse, formcontrolname:formcontrolname, displaycontrolname:displaycontrolname, a:a, ajax:1 },
		onComplete: function(transport){	
			text = transport.responseText;
			new Ajax.Request(basehref + "europasscv/display/" + displaycontrolname + ".comp", {
				method:'get',
				parameters: { forumid:forumid, id:id, v:v, element:element, ajax:1 },
				onComplete: function(transport){	
					text = transport.responseText;
					cdiv.update(text);
					var nodes = $A(cdiv.getElementsByTagName('div')).map(Element.extend);
					for (var i = 0; i < nodes.length; i++)	{
						if (nodes[i].className == 'epcv_editcontrols') {
							//Position.absolutize(nodes[i])
						}
					}

					$('epcv_mustpublishdiv').show();
					$('epcv_uptodate').hide();
				},
				onFailure: function() { 
					cdiv.update('Could not complete ajax request');
				}
			});
		},
		onFailure: function() { 
			cdiv.update('Could not complete ajax request');
		}
	});
}

function epcv_cacel_editelement(id, v, element, divtouse, displaycontrolname, goforit) {
	epcv_formopen = false;
	var cdiv = $(divtouse);

	if (!goforit) {
		createOverlay(cdiv);
		checkSession('epcv_cacel_editelement(\''+id+'\', \''+v+'\', \''+element+'\', \''+divtouse+'\', \''+displaycontrolname+'\', 1)', false);
		return false;
	} else {

	}

	// remove tinymce here!!!!
	if (tinyMCE && simpleTinyMceOptions) { 
		var nodes = $A(cdiv.getElementsByTagName('textarea')).map(Element.extend);

		for (var i = 0; i < nodes.length; i++)	{
			if (nodes[i].className == 'simpletinymce' && nodes[i].id) {
				if (tinyMCE.get(nodes[i].id)) {
					tinyMCE.execCommand('mceRemoveControl', false, nodes[i].id);
				}
			}
		}
		//tinyMCE.init(simpleTinyMceOptions);
	}

	var req = new Ajax.Request(basehref + "europasscv/display/" + displaycontrolname + ".comp", {
		method:'get',
		parameters: { forumid:forumid, id:id, v:v, element:element, ajax:1 },
		onComplete: function(transport){	
			text = transport.responseText;
			cdiv.update(text);
		},
		onFailure: function() { 
			cdiv.update('Could not complete ajax request');
		}
	});
}

function fileuploadread(newid, title) {
	document.simplegroupform.factID.value = newid;
	if (!document.simplegroupform.title.value) {
		document.simplegroupform.title.value = title;
	}
	epcv_submit(document.simplegroupform, true, true);
}

function epcv_submit(form, ignorefileuplaod, goforit) {
	if (typeof(form) != 'object') { eval( 'form = document.' + form ); }

	var formcontrolname = form.formcontrolname.value;
	var displaycontrolname = form.displaycontrolname.value;
	var cdiv = $(form.divtouse.value);
	var displaydiv = form.divtodisplay && form.divtodisplay.value ? $(form.divtodisplay.value) : $(form.divtouse.value);

	if (!goforit) {
		createOverlay(cdiv);
		checkSession('epcv_submit(\'' + $(form).getAttribute("name") + '\', ' + ignorefileuplaod + ', 1)', false);
		return false;
	} else {

	}

	var elements = form.elements;
	var pairs = new Array();

	var params = {};
	params['ajax'] = 1;
	for (var i = 0; i < elements.length; i++) {
		if (elements[i].className == 'simpletinymce' && elements[i].id) {
			params[elements[i].name] = tinyMCE.get(elements[i].id).getContent();
			if (simpleTinyMceOptions && elements[i].id && tinyMCE.get(elements[i].id)) tinyMCE.execCommand('mceRemoveControl', false, elements[i].id);
		}
		if(elements[i].type == 'checkbox'){
			if(elements[i].checked){
				params[elements[i].name] = elements[i].value;
			}
		} else if (elements[i].type == 'radio'){
			if(elements[i].checked){
				params[elements[i].name] = elements[i].value;
			}
		} else {
			params[elements[i].name] = elements[i].value;
		}
	}
	
	if (params['fileref'] && !ignorefileuplaod) {
		//--- file upload form
		var containerdiv = $(form).parentNode;
		containerdiv = $(containerdiv);
		var overlaydiv = containerdiv.firstDescendant();

		$(overlaydiv).setStyle( { width: $(containerdiv).getWidth(), height: $(containerdiv).getHeight() } );
		$(overlaydiv).show();

		form.target = 'fileuploadiframe';
		form.submit();
		return false;
	}
	

	new Ajax.Request(form.action, {
		contentType: 'application/x-www-form-urlencoded',
		encoding:'UTF-8',
		method:'post',
		parameters: params,
		onLoading: function () {
			//cdiv.update('<div style="padding-left: 10px; padding-right: 10px; text-align: center;">&nbsp;<br><img src="/images/loading.gif" width=32 height=32 alt="" border=0><br>&nbsp;</div>');
		},
		onSuccess: function(transport){	
			text = transport.responseText;
			//cdiv.update(text); return;
			var reslogin = text.match(/<mustloginfirst\/>/i);
			if (reslogin && reslogin[0]) {
				window.top.location.reload();
				return;
			}
			
			var res = text.match(/<error>(.+)<\/error>/i);
			if(res && res[0]){
				//--- error
				epcv_formopen = true;
				params['ajax'] = 1;
				params['error'] = res[0];
				new Ajax.Request(basehref + "europasscv/forms/" + formcontrolname + ".comp", {
					method:'get',
					parameters: params,
					onComplete: function(transport){	
						text = transport.responseText;
						cdiv.update(text);
						if (tinyMCE && simpleTinyMceOptions) { tinyMCE.init(simpleTinyMceOptions); }
					},
					onFailure: function() { 
						cdiv.update('Could not complete ajax request');
					}
				});
			} else {
				//--- success
				epcv_formopen = false;
				params['ajax'] = 1;
				new Ajax.Request(basehref + "europasscv/display/" + displaycontrolname + ".comp", {
					method:'get',
					parameters: params,
					onComplete: function(transport){	
						text = transport.responseText;
						displaydiv.update(text);
						var nodes = $A(displaydiv.getElementsByTagName('div')).map(Element.extend);
						for (var i = 0; i < nodes.length; i++)	{
							if (nodes[i].className == 'epcv_editcontrols') {
								//Position.absolutize(nodes[i])
							}
						}

						$('epcv_mustpublishdiv').show();
						$('epcv_uptodate').hide();
						new Ajax.Request(basehref + "europasscv/lib/exportform.comp", {
							method:'get',
							parameters: { 'forumid': forumid, 'id': params['id'], 'ajax': 1 },
							onComplete: function(transport){	
								text = transport.responseText;
								//alert('readytoupdate');
								$('epcv_exportformdiv').update(text);
							},
							onFailure: function() { 
								$('epcv_exportformdiv').update('Could not complete ajax request');
							}
						});
					},
					onFailure: function() { 
						cdiv.update('Could not complete ajax request');
					}
				});	
			}
		},
		requestHeaders: {
			'Connection': 'close'
		},
		onFailure: function(){ alert('The system could not complete your request. Please reload your page and try again.') }
	});
		 
	return false;
}
function epcv_specialhover(element, onoroff) {
	var e = $(element);
	var t = e.parentNode.parentNode.parentNode;
	var nodes = $A(t.getElementsByTagName('td')).map(Element.extend);

	for (var i = 0; i < nodes.length; i++)	{
		if (nodes[i].className == 'right') {
			nodes[i].setStyle({  backgroundColor: onoroff ? '#EEEEEE' : 'transparent' });
		}
	}
}
function epcv_checkimageform(form) {
	if (form.image.value) {
		var res = form.image.value.match(/\.(jpg|jpeg|png|gif|bmp)$/i);
		if (!res) {
			alert('Please select a valid image (jpg/png/gif)!');
			return false;
		}
	} else {
		alert('Please select an image file!');
		return false;
	}
	return true;
}
function epcv_showexportmore(onoroff) {
	if (onoroff) {
		$('epcv_exportmore').show();
	} else {
		$('epcv_exportmore').hide();
	}
}


function _dump(arr,level) {
	var dumped_text = "";
	if (!level) level = 0;
	if (level > 0) return;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += _dump(value, level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}


function createOverlay(parentelementid) {
	parentelement = $(parentelementid);
	parentelement.setStyle({'position':'relative'});

	var overlay = document.createElement('div');
	overlay = $(overlay);
	overlay.setStyle({position:'absolute', top:0, left:0, width:$(parentelement).getWidth(), height:$(parentelement).getHeight(), opacity:0.7, filter:'alpha(opacity=70)', 'text-align':'center', 'background-color':'#FFFFFF'});

	var loadingImg = document.createElement('img');
	loadingImg = $(loadingImg);
	loadingImg.setStyle({width:32, height:32, border:0, 'margin-top':10, 'margin-left':'auto', 'margin-right':'auto'});
	loadingImg.src = "/images/loading.gif";
	loadingImg.alt = "Loading...";
	overlay.appendChild(loadingImg);

	$(parentelement).appendChild(overlay);

	return overlay; 
}

var createshortfcutargs;
function modal_createshortcut(forumid, folderid, folderv, referer) {
	createshortfcutargs = {
		'forumid' : forumid,
		'parent_id' : folderid,
		'parent_v' : folderv,
		'directcreate' : 1,
		'referer' : escape(referer)
	};

	Windows.closeAll();
  	var url = basehref + "editor/factlink.htm?forumid=" + forumid + '&type=custom&successcallback=modal_createshortcut_result';

  	var win = new Window( {
		url:			url,
		className:		"default", 
		width:			850, 
		height:			395,
		resizable:		false,
		closable:		true,
		minimizable:	false,
		maximizable:	false,
		draggable:		false
	} );

	win.setZIndex(30003);
	win.showCenter(1);
}

function modal_createshortcut_result(id) {
	var res = id.match(/^(\d+)\.(\d+)$/);
	if (res && res[1]) {
		createshortfcutargs['targetfactid'] = res[1];
		createshortfcutargs['targetfactversionid'] = res[2];
	} else {
		return false;
	}

	var url = '/structure/edit/add_shortcut_form.comp?' + Object.toQueryString(createshortfcutargs);
	window.location = url;
}
function delete_myeditform (forumid,formuid) {
	if(confirm("Are you sure you would like to delete the selected form?")){
		var req = new Ajax.Request(basehref + 'edit/forms3/actions/delformrecord.comp', {
			method:'post',
			parameters: {formuid:formuid, forumid:forumid},
			onSuccess: function(transport) { 
				if (transport.responseText.match(/<ok\/>/)){
					window.location.reload();
				} else {
					alert("There was an error deleting this form");
				}	
			},
			onFailure: function() { 
				alert("error");
			}
		});
	}
}
