/**************************************************************************
 * C5-Edit-Funcs (C) by Stefan Mateescu / Taurus IT GmbH <stm@taurus-it.de>
 * --> Version 0.1 (2008-01-19)
 **************************************************************************
 * NO UNAUTHORIZED USE! DO NOT REMOVE THIS COPYRIGHT NOTICE!
 **************************************************************************/

/************
 ACTION HANDLERS
 *************************/

function c5_onclickAddContent(content_id) {
	// reset layer
	c5_resetHalfmodalDialogEx(0, 350, 200, "VOID");
	// get anchor position
	var tmp = $('c5contentId_'+content_id).className.split("_");
	var content_anchor = tmp[1];
	// AJAX-Action
	var url = c5getAJAXPREFIX() + "&content_action=add_content_box&content_id="+content_id+"&content_anchor="+content_anchor;
	c5_doHalfmodalGETrequestEx(0, url);
}

function c5_redrawContentAjaxly(content_id) {
	// get anchor position
	var tmp = $('c5contentId_'+content_id).className.split("_");
	var content_anchor = tmp[1];
	// dstLayer
	var t = c5_createTempDivForAjax('tempDiv_EDIT');
	c5_addClass(t, "c5contentAtAnchor_"+content_anchor);
	document.body.appendChild(t);
	// AJAX-Action
	var url = c5getAJAXPREFIX() + "&content_action=read&content_id="+content_id+"&content_anchor="+content_anchor;
	c5_doEditGETrequest(url, 'c5contentId_'+content_id, 'tempDiv_EDIT');
}

function c5_onclickEditContent(content_id) {
	// get anchor position
	var tmp = $('c5contentId_'+content_id).className.split("_");
	var content_anchor = tmp[1];
	// dstLayer
	var t = c5_createTempDivForAjax('tempDiv_EDIT');
	c5_addClass(t, "c5contentAtAnchor_"+content_anchor);
	document.body.appendChild(t);
	// AJAX-Action
	var url = c5getAJAXPREFIX() + "&content_action=edit&content_id="+content_id+"&content_anchor="+content_anchor;
	c5_doEditGETrequest(url, 'c5contentId_'+content_id, 'tempDiv_EDIT');
}

function c5_onclickContentOptions(content_id) {
	// reset layer
	c5_resetHalfmodalDialogEx(0, 400, 220, "VOID");
	// get anchor position
	var tmp = $('c5contentId_'+content_id).className.split("_");
	var content_anchor = tmp[1];
	// AJAX-Action
	var url = c5getAJAXPREFIX() + "&content_action=options&content_id="+content_id+"&content_anchor="+content_anchor;
	c5_doHalfmodalGETrequestEx(0, url);
}

function c5_saveContentOptions(content_id) {
	// get anchor position
	var tmp = $('c5contentId_'+content_id).className.split("_");
	var content_anchor = tmp[1];
	// dstLayer
	var t = c5_createTempDivForAjax('tempDiv_EDIT');
	c5_addClass(t, "c5contentAtAnchor_"+content_anchor);
	document.body.appendChild(t);
	// send form
	var url = c5getAJAXPREFIX() + "&content_action=options_save&content_id="+content_id+"&content_anchor="+content_anchor;
	$('c5_content_options_form').action = url;
	c5_doEditPOSTrequest('c5_content_options_form', 'c5_halfmodal_content0', 'tempDiv_EDIT');
}

function c5_onclickDeleteContent(content_id) {
	var url = c5getAJAXPREFIX() + "&content_action=delete&content_id="+content_id;
	c5_showAjaxLayer();
	new Request({
		url: url+"&c5mooUTF8=1",
		method: 'get',
		onSuccess: function(transport) {
			// do js-remove in DOM
			c5_onclickDeleteRemoveContent(content_id);
			c5_hideAjaxLayer();
		}
	 }).send();
}

function c5_onclickCancelEditContent(content_id) {
	var FX_DURATION = c5_FX_DURATION();
	// get anchor position
	var tmp = $('c5contentId_'+content_id).className.split("_");
	var content_anchor = tmp[1];
	// check the ADDCONTENT-BOX later
	setTimeout("c5_checkAnchorDefaultAddbox("+content_anchor+");", c5_FX_DURATION()*1.5);
	// special handfling for NEW contents
	if (content_id.substr(0,3)=="NEW") {
		// get anchor position
		var tmp = $('c5contentId_'+content_id).className.split("_");
		var content_anchor = tmp[1];
		var dstSize = $('c5contentId_'+content_id).getSize();
		$('c5contentId_'+content_id).setStyles({
			'display': 'block',
			'overflow': 'hidden',
			'height': dstSize.y+"px",
			'opacity': 1
		});
		var betwElem = c5_getNextElementFromDOM($('c5contentId_'+content_id));
		if (betwElem==null || betwElem.className!="c5contentBetween_"+content_anchor) {
			betwElem = c5_getPreviousElementFromDOM($('c5contentId_'+content_id));
			if (betwElem==null || betwElem.className!="c5contentBetween_"+content_anchor) {
				betwElem = null;
			}
		}
		var fx1 = new Fx.Morph($('c5contentId_'+content_id), {duration: FX_DURATION, wait: false});
		if (betwElem!=null)
			var fx2 = new Fx.Morph(betwElem, {duration: FX_DURATION, wait: false});
		fx1.start( {
			'height': '0px',
			'opacity': 0
		} ).chain(function() {
			$('c5contentId_'+content_id).destroy();
		});
		if (betwElem!=null)
			fx2.start( {
				'height': '0px',
				'opacity': 0
			} ).chain(function() {
				betwElem.destroy();
			});
		return;
	}
	// dstLayer
	var t = c5_createTempDivForAjax('tempDiv_EDIT');
	c5_addClass(t, "c5contentAtAnchor_"+content_anchor);
	document.body.appendChild(t);
	// AJAX-Action
	var url = c5getAJAXPREFIX() + "&content_action=read&content_id="+content_id+"&content_anchor="+content_anchor;
	c5_doEditGETrequest(url, 'c5contentId_'+content_id, 'tempDiv_EDIT');
}

function c5_onclickEditLinks(content_id) {
	// get anchor position
	var tmp = $('c5contentId_'+content_id).className.split("_");
	var content_anchor = tmp[1];
	// get style-id
	var p = /content_style=([0-9]+)/;
	var r = p.exec($("c5editContentForm_"+content_id).action);
	var content_style = r?r[1]:0;
	// dstLayer
	var t = c5_createTempDivForAjax('tempDiv_EDIT');
	c5_addClass(t, "c5contentAtAnchor_"+content_anchor);
	document.body.appendChild(t);
	// send form
	var url = c5getAJAXPREFIX() + "&content_action=edit_links&content_id="+content_id+"&content_style="+content_style+"&content_anchor="+content_anchor;
	$('c5editContentForm_'+content_id).action = url;
	c5_doEditPOSTrequest('c5editContentForm_'+content_id, 'c5contentId_'+content_id, 'tempDiv_EDIT');
}

function c5_onclickEditLinksBack(content_id) {
	// get anchor position
	var tmp = $('c5contentId_'+content_id).className.split("_");
	var content_anchor = tmp[1];
	// dstLayer
	var t = c5_createTempDivForAjax('tempDiv_EDIT');
	c5_addClass(t, "c5contentAtAnchor_"+content_anchor);
	document.body.appendChild(t);
	// send form
	var url = c5getAJAXPREFIX() + "&content_action=edit_links&content_id="+content_id+"&content_anchor="+content_anchor;
	$('c5editContentForm_'+content_id).action = url;
	c5_doEditPOSTrequest('c5editContentForm_'+content_id, 'c5contentId_'+content_id, 'tempDiv_EDIT');
}

function c5_onclickSaveEditContent(content_id) {
	// get anchor position
	var tmp = $('c5contentId_'+content_id).className.split("_");
	var content_anchor = tmp[1];
	// dstLayer
	var t = c5_createTempDivForAjax('tempDiv_EDIT');
	c5_addClass(t, "c5contentAtAnchor_"+content_anchor);
	document.body.appendChild(t);
	// send form
	c5_doEditPOSTrequest('c5editContentForm_'+content_id, 'c5contentId_'+content_id, 'tempDiv_EDIT');
}

function c5_openEditLinkWindow(content_id, field_name, link_id, link_text) {
	// reset layer
	c5_resetHalfmodalDialogEx(3, 500, 300, "VOID");
	// get anchor position
	var tmp = $('c5contentId_'+content_id).className.split("_");
	var content_anchor = tmp[1];
	// get style-id
	var p = /content_style=([0-9]+)/;
	var r = p.exec($("c5editlinks_"+content_id).action);
	var content_style = r?r[1]:0;
	// AJAX-Action
	var url = c5getAJAXPREFIX() + "&content_action=edit_link_window&content_id="+content_id+"&content_style="+content_style+"&content_anchor="+content_anchor+"&field_name="+field_name+"&link_id="+link_id+"&link_text="+c5_encode(link_text);
	c5_doHalfmodalGETrequestEx(3, url);
}

function c5_backToEdit(content_id) { ////////////////////
//	alert("edit "+link_id);
	// get anchor position
	var tmp = $('c5contentId_'+content_id).className.split("_");
	var content_anchor = tmp[1];
	// dstLayer
	var t = c5_createTempDivForAjax('tempDiv_EDIT');
	c5_addClass(t, "c5contentAtAnchor_"+content_anchor);
	document.body.appendChild(t);
	// AJAX-Action
	c5_doEditPOSTrequest('c5editlinks_'+content_id, 'c5contentId_'+content_id, 'tempDiv_EDIT', false);
}

function c5_saveLinkFromDialog(content_id, content_style, content_anchor, field_name, link_id, link_text) {
	// dstLayer
	var t = c5_createTempDivForAjax('tempDiv_EDITLINK1');
	c5_addClass(t, "c5contentAtAnchor_"+content_anchor);
	document.body.appendChild(t);
	// AJAX-Action
	c5_doEditPOSTrequestSilent('c5_edit_link_form', 'tempDiv_EDITLINK1', false);
	c5_hideHalfmodalDialogNew($('c5_halfmodal_content3'));
	$('tempDiv_EDITLINK1').style.display = "block";
	$('tempDiv_EDITLINK1').style.left = "0px";
	$('tempDiv_EDITLINK1').style.background = "yellow";
	$('tempDiv_EDITLINK1').style.zIndex = "99999";
}

function c5_saveLinkFromDialog2(content_id, content_style, content_anchor, field_name, link_id, link_text, new_link_id) {
	// dstLayer
	var t = c5_createTempDivForAjax('tempDiv_EDITLINK2');
	c5_addClass(t, "c5contentAtAnchor_"+content_anchor);
	document.body.appendChild(t);
	// AJAX-Action
	var url = c5getAJAXPREFIX() + "&content_action=edit_link_window_store2&content_id="+content_id+"&content_style="+content_style+"&content_anchor="+content_anchor+"&field_name="+field_name+"&link_id="+link_id+"&link_text="+link_text+"&new_link_id="+new_link_id;
	$('c5editlinks_'+content_id).action = url;
	c5_doEditPOSTrequest('c5editlinks_'+content_id, 'c5contentId_'+content_id, 'tempDiv_EDITLINK2', false);
}

function c5_saveLinkFromDialog3() {
	// clean up
	if ($('tempDiv_EDITLINK1'))
		$('tempDiv_EDITLINK1').destroy();
	if ($('tempDiv_EDITLINK2'))
		$('tempDiv_EDITLINK2').destroy();
}

function c5_openViewImageWindow(content_id, element_id) {
	eval("var form = document.c5editContentForm_"+content_id);
	if (typeof form == "undefined")
		 eval("var form = document.c5edit_"+content_id);
	eval("var element = form."+element_id);
	// reset layer
	c5_resetHalfmodalDialogEx(6, 400, 300, "VOID");
	// AJAX-Action
	var url = c5getAJAXPREFIX() + "&editimage_action=view&content_id="+content_id+"&element_id="+element_id+"&element_value="+escape(element.value);
	c5_doHalfmodalGETrequestEx(6, url);
}

function c5_openViewImageWindow2(filepath) {
	// reset layer
	c5_resetHalfmodalDialogEx(6, 400, 300, "VOID");
	// AJAX-Action
	var url = c5getAJAXPREFIX() + "&view_resource="+escape(filepath);
	c5_doHalfmodalGETrequestEx(6, url);
}

// for contents in c5-mode
function c5_openSelectImageWindow(content_id, element_id) {
	eval("var form = document.c5editContentForm_"+content_id);
	if (typeof form == "undefined")
		 eval("var form = document.c5edit_"+content_id);
	eval("var element = form."+element_id);
	// reset layer
	c5_resetHalfmodalDialogEx(4, 700, 400, "VOID");
	// AJAX-Action
	var url = c5getAJAXPREFIX() + "&editimage_action=select&content_id="+content_id+"&element_id="+element_id+"&element_value="+escape(element.value);
	c5_doHalfmodalGETrequestEx(4, url);
}

// for any field in form_name.input_name
function c5_openSelectImageWindow2(form_name, input_name) {
	eval("var form = document."+form_name);
	eval("var element = form."+input_name);
	// reset layer
	c5_resetHalfmodalDialogEx(4, 700, 400, "VOID");
	// AJAX-Action
	var url = c5getAJAXPREFIX() + "&editimage_action=select2&form_name="+form_name+"&input_name="+input_name+"&element_value="+escape(element.value);
	c5_doHalfmodalGETrequestEx(4, url);
}

function c5_refreshSelectImageWindow(url) {
	// AJAX-Action
	c5_doHalfmodalGETrequestL8(url, 'c5_halfmodal_content4');
}

// for contents in c5-mode
function c5_openUploadImageWindow(content_id, element_id) {
	eval("var form = document.c5editContentForm_"+content_id);
	if (typeof form == "undefined")
		 eval("var form = document.c5edit_"+content_id);
	eval("var element = form."+element_id);
	// reset layer
	c5_resetHalfmodalDialogEx(5, 500, 300, "VOID");
	// AJAX-Action
	var url = c5getAJAXPREFIX() + "&editimage_action=upload&content_id="+content_id+"&element_id="+element_id+"&element_value="+escape(element.value);
	c5_doHalfmodalGETrequestEx(5, url);
}

// for any field in form_name.input_name
function c5_openUploadImageWindow2(form_name, input_name) {
	eval("var form = document."+form_name);
	eval("var element = form."+input_name);
	// reset layer
	c5_resetHalfmodalDialogEx(5, 500, 300, "VOID");
	// AJAX-Action
	var url = c5getAJAXPREFIX() + "&editimage_action=upload&form_name="+form_name+"&input_name="+input_name+"&element_value="+escape(element.value);
	c5_doHalfmodalGETrequestEx(5, url);
}

// for contents in c5-mode
function c5_useImage(content_id, element_id, value) {
	eval("var form = document.c5editContentForm_"+content_id);
	if (typeof form == "undefined")
		 eval("var form = document.c5edit_"+content_id);
	eval("var element = form."+element_id);
	if (typeof element == "undefined")
		 eval("var element = form.c5editContent__"+element_id);
	element.value = value;
}

// for any field in form_name.input_name
function c5_useImage2(form_name, input_name, value) {
	eval("var form = document."+form_name);
	eval("var element = form."+input_name);
	element.value = value;
}

/************
 SELECT-PAGE-WIZERD
 *************************/

var c5_lastTriggeredPageElement = null;

function c5_openSelectPageWindow(content_id, element_id, c5a, c5l) {
	c5_lastTriggeredPageElement = element_id;
	eval("var form = document.c5editContentForm_"+content_id);
	if (typeof form == "undefined")
		 eval("var form = document.c5edit_"+content_id);
	if (typeof form == "undefined")
		 eval("var form = document.c5_edit_link_form");
	if (typeof form == "undefined")
		 eval("var form = document.c5_add_reference_form");
	eval("var element = form."+element_id);
	// lang override in edit link
	if (element_id=="internal_id" && $chk(document.c5_edit_link_form) && $chk(document.c5_edit_link_form.internal_lang)) {
		tmp = document.c5_edit_link_form.internal_lang.options[document.c5_edit_link_form.internal_lang.selectedIndex].value;
		if (tmp!="" && tmp!="*")
			c5l = tmp;
		else
			c5l = c5js_c5l();
	}
	// reset layer
	c5_resetHalfmodalDialogEx(4, 500, 300, "VOID");
	// AJAX-Action
	var url = c5getAJAXPREFIX() + "&c5pages_action=show_tree&content_id="+content_id+"&element_id="+element_id+"&element_value="+escape(element.value)+"&element_area="+c5a+"&element_lang="+c5l;
	c5_doHalfmodalGETrequestEx(4, url);
}

function c5_usePageFromHalfmodalDialog(id, title) {
	$('uniq_'+c5_lastTriggeredPageElement).value = "("+id+") "+title;
	c5_hideHalfmodalDialogNew($('c5_halfmodal_content4'));
}

function c5_searchPageInHalfmodalDialog() {
	c5_showAjaxLayer();
	jQuery.ajax({
		type: "GET",
		url: c5_pagesTreePopupSearchUrl+"&q="+escape(Utf8.encode($('ptSearchQ').value))+"&c5mooUTF8=1",
		cache: false,
		dataType: "html",
		processData: false,
        success: function(html){
			jQuery("#treetool_pt").html(html);
			c5_hideAjaxLayer();
		}
	});
}

/************
 WORKER FUNCS
 *************************/

function c5_onclickDeleteRemoveContent(content_id) {
	// do dom action
	var FX_DURATION = c5_FX_DURATION();
	var tmp = $('c5contentId_'+content_id).className.split("_");
	var content_anchor = tmp[1];
	var dstSize = $('c5contentId_'+content_id).getSize();
	$('c5contentId_'+content_id).setStyles({
		'display': 'block',
		'overflow': 'hidden',
		'height': dstSize.y+"px",
		'opacity': 1
	});
	var betwElem = c5_getNextElementFromDOM($('c5contentId_'+content_id));
	if (betwElem==null || betwElem.className!="c5contentBetween_"+content_anchor) {
		betwElem = c5_getPreviousElementFromDOM($('c5contentId_'+content_id));
		if (betwElem==null || betwElem.className!="c5contentBetween_"+content_anchor) {
			betwElem = null;
		}
	}
	var fx1 = new Fx.Morph($('c5contentId_'+content_id), {duration: FX_DURATION, wait: false});
	if (betwElem!=null)
		var fx2 = new Fx.Morph(betwElem, {duration: FX_DURATION, wait: false});
	fx1.start( {
		'height': '1px',
		'opacity': 0
	} ).chain(function() {
		$('c5contentId_'+content_id).destroy();
	});
	if (betwElem!=null)
		fx2.start( {
			'height': '1px',
			'opacity': 0
		} ).chain(function() {
			betwElem.destroy();
		});
   	setTimeout("c5_checkAnchorDefaultAddbox("+content_anchor+");", c5_FX_DURATION()*1.5);
	return;
}

var c5_lastAddedContent = 0;
function c5_initiateAddContent(anchor_id, style_id, content_id, position) {	// content_id is OPTIONAL, position is 'above' or 'below'
c5_debugTrace("c5_initiateAddContent(anchor_id="+anchor_id+", style_id="+style_id+", content_id="+content_id+", position="+position);
	c5_lastAddedContent++;
	c5_hideHalfmodalDialogNew($('c5_halfmodal_content0'));
	// create new DIV in Anchor-Loop
	var tmpDivId = 'c5contentId_NEW_'+c5_lastAddedContent;
	var newContent = document.createElement('div');
	newContent.setAttribute("id", tmpDivId);
	c5_addClass(newContent, "c5contentAtAnchor_"+anchor_id);
	var newBetween = document.createElement('div');
	newBetween.innerHTML = $('c5contentHiddenBetween_'+anchor_id).innerHTML;
	c5_addClass(newBetween, "c5contentBetween_"+anchor_id);
	if (position=="above") {
		var referenceContent = $('c5contentId_'+content_id);
		$('c5containerAnchor_'+anchor_id).insertBefore(newContent, referenceContent);
		$('c5containerAnchor_'+anchor_id).insertBefore(newBetween, referenceContent);
	}
	if (position=="below") {
		var referenceContent = $('c5contentId_'+content_id);
		$('c5containerAnchor_'+anchor_id).insertBefore(newContent, referenceContent.nextSibling);
		$('c5containerAnchor_'+anchor_id).insertBefore(newBetween, referenceContent.nextSibling);
	}
	if (position=="") {
		var referenceContent = $('c5contentAddElement_'+anchor_id);
		$('c5containerAnchor_'+anchor_id).insertBefore(newContent, referenceContent.nextSibling);
	}
	// dstLayer
	var t = c5_createTempDivForAjax('tempDiv_EDIT');
	c5_addClass(t, "c5contentAtAnchor_"+anchor_id);
	document.body.appendChild(t);
	// AJAX-Action
	var ajaxPosition = position+"+"+content_id;
	var url = c5getAJAXPREFIX() + "&content_action=edit&content_id=NEW_"+c5_lastAddedContent+"&content_style="+style_id+"&content_anchor="+anchor_id+"&ajaxPosition="+ajaxPosition;
	c5_doEditGETrequest(url, tmpDivId, 'tempDiv_EDIT');
	setTimeout("c5_checkAnchorDefaultAddbox("+anchor_id+");", c5_FX_DURATION()*2);
}

/************
 HELPER FUNCS
 *************************/

function c5_checkAnchorDefaultAddbox(anchor_id) {
	var ac = $('c5containerAnchor_'+anchor_id);
	var contentsInAnchor = 0;
	ac.getChildren().each(function(v,k) {
		if (v.className=="c5contentAtAnchor_"+anchor_id)
			contentsInAnchor++;
	});
	var displaySoll = contentsInAnchor>0?'none':'block';
	var displayIst = $('c5contentAddElement_'+anchor_id).getStyle('display');
	if (displaySoll!=displayIst) {
		if (displaySoll=="none")
			stm_hideLayer('c5contentAddElement_'+anchor_id, c5_FX_DURATION());
		else
			stm_showLayer('c5contentAddElement_'+anchor_id, c5_FX_DURATION());
	}
}

function c5_reposElementInBounds(pos, size, min, max) {
	var BORDERBUFFER = c5_BORDERBUFFER();
	var res = pos;
	if (pos<min+BORDERBUFFER)
		res = min+BORDERBUFFER;
	else if (pos+size>max-BORDERBUFFER)
		res = max-size-BORDERBUFFER;
	return res;
}

/************
 HALFMODALDIALOG EX
 *************************/

var c5_removeHalfmodalDialogTimeoutEx = [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1];

function c5_enterHalfmodalDialogEx(n) {
	if (c5_removeHalfmodalDialogTimeoutEx[n]!=-1)
		clearTimeout(c5_removeHalfmodalDialogTimeoutEx[n]);
}

function c5_leaveHalfmodalDialogEx(n) {
	if (c5_removeHalfmodalDialogTimeoutEx[n]!=-1)
		clearTimeout(c5_removeHalfmodalDialogTimeoutEx[n]);
	c5_removeHalfmodalDialogTimeoutEx[n] = 1;//setTimeout('c5_doHideHalfmodalDialog()', '2000');
}

function c5_doHideHalfmodalDialogEx(n) {
	c5_removeHalfmodalDialogTimeoutEx[n] = -1;
	c5_hideHalfmodalDialogEx(n);
}

function c5_resetHalfmodalDialogEx(n, w, h, content) {
	$('c5_halfmodal_dialog'+n).setStyles({
		'top': '0px',
		'left': '0px',
		'width': w+'px',
		'display': 'none'
	});
	$('c5_halfmodal_content'+n).setStyles({
		'overflow': 'auto',
		'width': 'auto',
		'height': h+'px'
	});
	$('c5_halfmodal_content'+n).innerHTML = content;
}

function c5_showHalfmodalDialogEx(n, posY, posX, posStyleY, posStyleX) {
	var FX_DURATION = c5_FX_DURATION();
	var HALFMODAL_MIN_WIDTH = 150;
	var HALFMODAL_MIN_HEIGHT = 40;
	// determine size
	$('c5_halfmodal_dialog'+n).setStyles({
		'top': '0px',
		'left': '0px',
		'opacity': 0.01,
		'display': 'block'
	});
	var dstSize = $('c5_halfmodal_dialog'+n).getSize();
	var dstWidth = dstSize.x;
	var dstHeight = dstSize.y;
	var dstSizeInner = $('c5_halfmodal_content'+n).getSize();
	var dstWidthInner = dstSizeInner.x;
	var dstHeightInner = dstSizeInner.y;
	var dstPosX = posX;
	var dstPosY = posY;
	//alert("dstPosX="+dstPosX+" | dstPosY="+dstPosY+"\n"+"dstWidth="+dstWidth+" | dstHeight="+dstHeight);
	if (posStyleX=="left")
		dstPosX = posX;
	else if (posStyleX=="right")
		dstPosX = posX-dstWidth;
	else // must be middle
		dstPosX = posX-dstWidth/2;
	if (posStyleY=="top")
		dstPosY = posY;
	else if (posStyleY=="bottom")
		dstPosY = posY-dstHeight;
	else // must be middle
		dstPosY = posY-dstHeight/2;
	dstPosX = c5_reposElementInBounds(dstPosX, dstWidth, document.body.scrollLeft, document.body.clientWidth+document.body.scrollLeft);
	dstPosY = c5_reposElementInBounds(dstPosY, dstHeight, document.body.scrollTop, document.body.clientHeight+document.body.scrollTop);
	// initial setup in DOM
	var lastOverflow = $('c5_halfmodal_content'+n).getStyle('overflow');
	$('c5_halfmodal_content'+n).setStyles({
		'overflow': 'hidden',
		'height': HALFMODAL_MIN_HEIGHT+'px'
	});
	$('c5_halfmodal_dialog'+n).setStyles({
		'position': 'absolute',
		'width': HALFMODAL_MIN_WIDTH+'px',
		'top': (dstPosY+(dstHeight-HALFMODAL_MIN_HEIGHT)/2)+'px',
		'left': (dstPosX+(dstWidth-HALFMODAL_MIN_WIDTH)/2)+'px',
		'opacity': 0.01,
		'display': 'block'
	});
	// anim + cleanup
	var fx1 = new Fx.Morph($('c5_halfmodal_dialog'+n), {duration: FX_DURATION, wait: false});
	var fx2 = new Fx.Morph($('c5_halfmodal_content'+n), {duration: FX_DURATION, wait: false});
	fx1.start( {
		'width': dstWidth+'px',
		'top': dstPosY+'px',
		'left': dstPosX+'px',
		'opacity': 1
	} );
	fx2.start( {
		'height': dstHeightInner+'px'
	} ).chain(function() {
		$('c5_halfmodal_content'+n).setStyle('overflow', lastOverflow);
		c5_leaveHalfmodalDialogEx(n);
	});
}

function c5_hideHalfmodalDialogNew(elem, n) {
	if (n=="")
		n = -1;
	while (true) {
		var e = elem;
		if (e == null || typeof e == "undefined")
			break;
		if (e.nodeName=="DIV" && e.className=="c5_halfmodal_dialog") {
			var dialogNumber = e.id.substring(e.id.length-1);
			var dialogName = e.id.substring(0, e.id.length-1);
			for (var d=parseInt(dialogNumber); d<=9; d++) {
				if ($(dialogName+d) && $(dialogName+d).style.display!="none") {
					var FX_DURATION = c5_FX_DURATION();
					var fx1 = new Fx.Morph($(dialogName+d), {duration: FX_DURATION, wait: false});
					fx1.start( { 'opacity': 0 } );
				}
			}
		}
		elem = e.parentNode;
	}
}

function c5_hideHalfmodalDialogEx(n) {
	var FX_DURATION = c5_FX_DURATION();
	var fx1 = new Fx.Morph($('c5_halfmodal_dialog'+n), {duration: FX_DURATION, wait: false});
	fx1.start( {
		'opacity': 0
	} );
}

function c5_doHalfmodalGETrequestEx(n, url) {
	var dstDivName = "c5_halfmodal_content"+n;
	var actX = mouseX;
	var actY = mouseY;
	c5_showAjaxLayer();
	jQuery.ajax({
		type: "GET",
		url: url+"&c5mooUTF8=1",
		cache: false,
		dataType: "html",
		processData: false,
        success: function(html){
			jQuery("#"+dstDivName).html(html);
			// show window
			c5_debugTrace("JQUERY//OPEN ADD-WINDOW:<br>y="+mouseY+"; x="+mouseX);
			c5_showHalfmodalDialogEx(n, actY+5, actX+5, "top", "left");
			setTimeout('c5_checkForJsExecLayer()', c5_FX_DURATION()*2);
			c5_hideAjaxLayer();
		}
	});
}

function c5_doHalfmodalGETrequestL8(url, dstDivName) {
	var actX = mouseX;
	var actY = mouseY;
	c5_showAjaxLayer();
	jQuery.ajax({
		type: "GET",
		url: url+"&c5mooUTF8=1",
		cache: false,
		dataType: "html",
		processData: false,
        success: function(html){
			jQuery("#"+dstDivName).html(html);
			c5_debugTrace("JQUERY//OPEN ADD-WINDOW:<br>y="+mouseY+"; x="+mouseX);
			setTimeout('c5_checkForJsExecLayer()', c5_FX_DURATION()*2);
			c5_hideAjaxLayer();
		}
	});
}

/************
 OTHER
 *************************/

function c5_repairTinyMceForAjax(formId) {
	// check if tinymce exists
	if (typeof tinyMCE == "undefined")
		return;
	// chekc if therer are editors
	for (var i=0; i<$(formId).elements.length; i++) {
		var e = $(formId).elements[i];
		if (e.name!="") {
			var me = "c5editContent__"+e.name;
			if (tinyMCE.get(me) && typeof tinyMCE.get(me)!="undefined" && tinyMCE.get(me)!=null) {
				var eobj = tinyMCE.get(me);
				// ??? eobj.execCommand('mceCleanup', false);
				eobj.save();
				eobj.destroy();
			}
		}
	}
}

function c5_doEditPOSTrequest(formId, srcDivName, dstDivName, allowTinyMceRepair) {
	c5_showAjaxLayer();
	$(formId).action += "&c5mooUTF8=1";
	// repair tinyMCE boxes
	if (typeof allowTinyMceRepair == "undefined")
		allowTinyMceRepair = true;
	if (allowTinyMceRepair)
		c5_repairTinyMceForAjax(formId);
	// do ajax request
	$(formId).set('send', {
		onSuccess: function(transport, xml) {
			$(dstDivName).set('html', transport.stripScripts(true));
			c5_doDivTransition($(srcDivName), $(dstDivName));
			c5_hideAjaxLayer();
		}
	});
	$(formId).send();
}

function c5_doEditPOSTrequestSilent(formId, dstDivName, allowTinyMceRepair) {
	c5_showAjaxLayer();
	$(formId).action += "&c5mooUTF8=1";
	// repair tinyMCE boxes
	if (typeof allowTinyMceRepair == "undefined")
		allowTinyMceRepair = true;
	if (allowTinyMceRepair)
		c5_repairTinyMceForAjax(formId);
	// do ajax request
	$(formId).set('send', {
		onSuccess: function(transport, xml) {
			$(dstDivName).set('html', transport.stripScripts(true));
			c5_checkForJsExecLayer();
			c5_hideAjaxLayer();
		}
	});
	$(formId).send();
}

function c5_doEditGETrequest(url, srcDivName, dstDivName) {
	c5_showAjaxLayer();
	new Request({
		url: url+"&c5mooUTF8=1",
		method: 'get',
		onSuccess: function(transport, xml) {
			$(dstDivName).set('html', transport.stripScripts(true));
			c5_doDivTransition($(srcDivName), $(dstDivName));
			c5_hideAjaxLayer();
		}
	 }).send();
}

function c5_createTempDivForAjax(divName) {
	var t = document.createElement('div');
	t.id = divName;
	t.style.display = "block";
	t.style.position = "absolute";
	t.style.width = "1900px";
	t.style.top = "0px";
	t.style.left= "-2000px";
	return t;
}

function c5_getScrollStep(diff) {
	var negative = (diff<0)?-1:1;
	if (diff==0)
		return 0;
	if (Math.abs(diff)<4)
		return 1*negative;
	if (Math.abs(diff)<8)
		return 2*negative;
	if (Math.abs(diff)<12)
		return 4*negative;
	if (Math.abs(diff)<25)
		return 6*negative;
	if (Math.abs(diff)<50)
		return 10*negative;
	return 20*negative;
}

var c5_globalScrollToTimeout = -1;
var c5_globalScrollNoChange = 0;
function c5_scrollTo(x, y, oldX, oldY) {
	var wndStartX = document.body.scrollLeft;
	var wndStartY = document.body.scrollTop;
	var diffX = x-wndStartX;
	var diffY = y-wndStartY;
	if (typeof oldX != "undefined") {
		if (oldX==wndStartX && oldY==wndStartY) {
			c5_globalScrollNoChange++;
		}
	}
	if (c5_globalScrollNoChange>20 || (diffX==0 && diffY==0)) {
		c5_globalScrollNoChange = 0;
		c5_globalScrollToTimeout = -1;
		return;
	}
	var stepX = c5_getScrollStep(diffX);
	var stepY = c5_getScrollStep(diffY);
	scrollTo(wndStartX+stepX, wndStartY+stepY);
	if (c5_globalScrollToTimeout != -1)
		clearTimeout(c5_globalScrollToTimeout);
	c5_globalScrollToTimeout = setTimeout("c5_scrollTo("+x+", "+y+", "+wndStartX+", "+wndStartY+")", 15);
}

function c5_doDivTransition(srcDiv, dstDiv) {
	// settings
	var FX_DURATION = c5_FX_DURATION();
	var BORDERBUFFER = c5_BORDERBUFFER();
	// compute resizeEffect
	var srcSize = srcDiv.getSize();
	dstDiv.setStyle('opacity', 0.01);
	dstDiv.style.top = srcDiv.getTop(); //c5_getTop(srcDiv);
	dstDiv.style.left = srcDiv.getLeft(); //c5_getLeft(srcDiv);
	dstDiv.style.width = srcSize.x;
	var dstSize = dstDiv.getSize();
	var startHeight = srcSize.y;
	var endHeight = dstSize.y;
	var endWidth = srcSize.x;
	srcDiv.style.overflow = 'hidden';
	dstDiv.style.overflow = 'hidden';
	dstDiv.style.height = startHeight;
	// compute scrolling
	var elemStartX = srcDiv.getLeft();
	var elemStartY = srcDiv.getTop();
	var elemEndX = elemStartX+dstSize.x;
	var elemEndY = elemStartY+endHeight;
	var wndStartX = document.body.scrollLeft;
	var wndStartY = document.body.scrollTop;
	var wndEndX = wndStartX + document.body.clientWidth;
	var wndEndY = wndStartY + document.body.clientHeight;
	var diffX = 0;
	var diffY = 0;
	//alert("elemStartY="+elemStartY+" | elemEndY="+elemEndY+"\n"+"wndStartY="+wndStartY+" | wndEndY="+wndEndY);
	if (elemEndY>wndEndY) {
		diffY = +(elemEndY-wndEndY+BORDERBUFFER);
		if (elemStartY-diffY<wndStartY)
			diffY = elemStartY-BORDERBUFFER-wndStartY;
	}
	if (elemStartY<wndStartY) {
		diffY = -(wndStartY-elemStartY+BORDERBUFFER);
	}
	//alert("elemStartX="+elemStartX+" | elemEndX="+elemEndX+"\n"+"wndStartX="+wndStartX+" | wndEndX="+wndEndX);
	if (elemEndX>wndEndX) {
		diffX = +(elemEndX-wndEndX+BORDERBUFFER);
		if (elemStartX-diffX<wndStartX)
			diffX = elemStartX-BORDERBUFFER-wndStartX;
	}
	if (elemStartX<wndStartX) {
		diffX = -(wndStartX-elemStartX+BORDERBUFFER);
	}
	//alert(diffX);
	if (diffX!=0 || diffY!=0) {
		c5_scrollTo(wndStartX+diffX, wndStartY+diffY);
	}
	// start actions
	var fx1 = new Fx.Morph(srcDiv, {duration: FX_DURATION, wait: false});
	var fx2 = new Fx.Morph(dstDiv, {duration: FX_DURATION, wait: false});
	fx1.start( {
		'height':endHeight,
		'opacity':0
	});
	fx2.start( {
		'height':endHeight,
		'opacity':1
	}).chain(function(){
		srcDiv.innerHTML = dstDiv.innerHTML;
		srcDiv.setStyle('opacity', 1);
		this.start();
	}).chain(function() {
		dstDiv.setStyle('opacity', 0);
		dstDiv.setStyle('left', "-2000");
		dstDiv.destroy();
		c5_checkForJsExecLayer();
		srcDiv.setStyle('height', 'auto');
		srcDiv.setStyle('width', endWidth+'px');
		srcDiv.setStyle('opacity', 1);
		this.start();
	});
}

// expand a div to its parent height (elem.height = parent.height - elem.relative_top)
function c5_resizeHeightInParent(elem, parent, more_offset) {
	if (typeof more_offset == "undefined")
		more_offset = 0;
	var p = $(parent);
	if (typeof p == "undefined" || p == null)
		p = $(elem).parentNode;
	var ph = p.getSize();
	var et = $(elem).offsetTop;
	$(elem).setStyle('height', (ph.y-et-more_offset)+'px');
}

/************
 CONTROL LAYER
 *************************/

function c5_hideControlLayer() {
	Cookie.write('c5controlHide', '1');
	$('c5control').setStyles({'display':'none'});
}

function c5_resetControlLayer() {
	c5_switchControlLayer();
	$('c5control').setStyles({'top':'5px', 'left':'5px'});
	Cookie.write('c5controlX', "5");
	Cookie.write('c5controlY', "5");
}

function c5_initControlLayer() {
	if (Cookie.read('c5controlHide')=="1")
		return;
	new Drag.Move('c5control', {
		'container': document.body,
		'onComplete': function () {
			var p = $('c5control').getPosition();
			Cookie.write('c5controlX', p.x);
			Cookie.write('c5controlY', p.y);
		}
	});

	var x = Cookie.read('c5controlX');
	var y = Cookie.read('c5controlY');
	if (x=="" || x==null)
		x = 5;
	if (y=="" || y==null)
		y = 5;

	$('c5control').setStyles({'display':'block', 'top':y+'px', 'left':x+'px'});
	$('c5controlInner').setStyles({'display':Cookie.read('c5controlDisplay')=="block"?'block':'none'});
	$('c5controlEmpty').setStyles({'display':Cookie.read('c5controlDisplay')=='block'?'none':'block'});
}

function c5_switchControlLayer() {
	if ($('c5controlInner').getStyle('display')=='block') {
		$('c5controlInner').setStyle('display', 'none');
		$('c5controlEmpty').setStyle('display', 'block');
		Cookie.write('c5controlDisplay', 'none');
	}
	else {
		$('c5controlInner').setStyle('display', 'block');
		$('c5controlEmpty').setStyle('display', 'none');
		Cookie.write('c5controlDisplay', 'block');
	}
}

/************
 DEBUG LAYER
 *************************/

var c5_debugItems = new Hash();

function c5_debugSetData(k, v) {
	c5_debugItems.set(k, v);
}

function c5_updateDebugLayer() {
	if ($('c5debugInner').getStyle('display')=='block') {
		var res = '<table width="100%" cellspacing=0 cellpadding=0 border=0>';
		c5_debugItems.each(function(v,k) {
			res += '<tr><td width="30%">'+k+'</td><td width="70%">'+v+'</td></tr>';
		});
		res += '</table>';
		$('c5debugStandard').innerHTML = res;
	}
	setTimeout('c5_updateDebugLayer()', 200);
}

function c5_hideDebugLayer() {
	Cookie.write('c5debugHide', '1');
	$('c5debug').setStyles({'display':'none'});
}

function c5_resetDebugLayer() {
	c5_switchDebugLayer();
	$('c5debug').setStyles({'top':'30px', 'left':'5px'});
	Cookie.write('c5debugX', "5");
	Cookie.write('c5debugY', "30");
}

function c5_initDebugLayer() {
	if (Cookie.read('c5debugHide')=="1")
		return;
	new Drag.Move('c5debug', {
		'container': document.body,
		'onComplete': function () {
			var p = $('c5debug').getPosition();
			Cookie.write('c5debugX', p.x);
			Cookie.write('c5debugY', p.y);
		}
	});
	var x = Cookie.read('c5debugX');
	var y = Cookie.read('c5debugY');
	if (x=="" || x==null)
		x = 5;
	if (y=="" || y==null)
		y = 30;
	$('c5debug').setStyles({'display':'block', 'top':y+'px', 'left':x+'px'});
	$('c5debugInner').setStyles({'display':Cookie.read('c5debugDisplay')=="block"?'block':'none'});
	$('c5debugEmpty').setStyles({'display':Cookie.read('c5debugDisplay')=='block'?'none':'block'});
	setTimeout('c5_updateDebugLayer()', 500);
}

function c5_switchDebugLayer() {
	if ($('c5debugInner').getStyle('display')=='block') {
		$('c5debugInner').setStyle('display', 'none');
		$('c5debugEmpty').setStyle('display', 'block');
		Cookie.write('c5debugDisplay', 'none');
	}
	else {
		$('c5debugInner').setStyle('display', 'block');
		$('c5debugEmpty').setStyle('display', 'none');
		Cookie.write('c5debugDisplay', 'block');
	}
}

/************
 LIST HELPERS
 *************************/

function c5_listAddItems(elementName) {
	// row
	var tr = document.createElement("TR");
	// td's
	var td1 = document.createElement("TD");
	td1.setAttribute('colspan', '5')
	var td1txt = document.createTextNode("TEXT TEXT TEXT 1")
	td1.appendChild(td1txt);
	// append td's
	tr.appendChild(td1);
	// append row
	$('table_'+elementName).appendChild(tr);
}

/************
 LINKTOOL HELPERS
 *************************/

function c5_handleLinktoolVisibility() {
	var linkType = document.c5_edit_link_form.type.value;
	var targetType = document.c5_edit_link_form.anc_target.value;
	// type-specific
	c5_hideLinktoolElements1();
	if (linkType=="internal") {
		$('editlink_tr_head_internal').style.display = document.all?'block':'table-row';
		$('editlink_tr_internal_id').style.display = document.all?'block':'table-row';
		$('editlink_tr_internal_lang').style.display = document.all?'block':'table-row';
		$('editlink_tr_get_params').style.display = document.all?'block':'table-row';
	}
	else if (linkType=="userfile") {
		$('editlink_tr_head_userfile').style.display = document.all?'block':'table-row';
		$('editlink_tr_userfile').style.display = document.all?'block':'table-row';
	}
	else if (linkType=="external") {
		$('editlink_tr_head_external').style.display = document.all?'block':'table-row';
		$('editlink_tr_external').style.display = document.all?'block':'table-row';
	}
	else if (linkType=="email") {
		$('editlink_tr_head_mailto').style.display = document.all?'block':'table-row';
		$('editlink_tr_mailto').style.display = document.all?'block':'table-row';
		$('editlink_tr_mail_subject').style.display = document.all?'block':'table-row';
	}
	else { // linkType==""
	}
	// others
	c5_hideLinktoolElements2();
	c5_hideLinktoolElements3();
	if (linkType!="") {
		c5_showLinktoolElements2();
		if (linkType=="email") { // undo for email
			$('editlink_tr_anc_target').style.display = 'none';
		}
		if (targetType=="*sat" && linkType!="email") {
			c5_showLinktoolElements3();
		}
	}
}

function c5_hideLinktoolElements1() {
	$('editlink_tr_head_internal').style.display = 'none';
	$('editlink_tr_internal_id').style.display = 'none';
	$('editlink_tr_internal_lang').style.display = 'none';
	$('editlink_tr_get_params').style.display = 'none';
	$('editlink_tr_head_userfile').style.display = 'none';
	$('editlink_tr_userfile').style.display = 'none';
	$('editlink_tr_head_external').style.display = 'none';
	$('editlink_tr_external').style.display = 'none';
	$('editlink_tr_head_mailto').style.display = 'none';
	$('editlink_tr_mailto').style.display = 'none';
	$('editlink_tr_mail_subject').style.display = 'none';
}

function c5_hideLinktoolElements2() {
	$('editlink_tr_head_anchor').style.display = 'none';
	$('editlink_tr_anc_target').style.display = 'none';
	$('editlink_tr_anc_class').style.display = 'none';
	$('editlink_tr_anc_tags').style.display = 'none';
}

function c5_showLinktoolElements2() {
	$('editlink_tr_head_anchor').style.display = document.all?'block':'table-row';
	$('editlink_tr_anc_target').style.display = document.all?'block':'table-row';
	$('editlink_tr_anc_class').style.display = document.all?'block':'table-row';
	$('editlink_tr_anc_tags').style.display = document.all?'block':'table-row';
}

function c5_hideLinktoolElements3() {
	$('editlink_tr_head_satellite').style.display = 'none';
	$('editlink_tr_sat_windowname').style.display = 'none';
	$('editlink_tr_sat_width').style.display = 'none';
	$('editlink_tr_sat_height').style.display = 'none';
	$('editlink_tr_sat_top').style.display = 'none';
	$('editlink_tr_sat_left').style.display = 'none';
	$('editlink_tr_sat_menubar').style.display = 'none';
	$('editlink_tr_sat_toolbar').style.display = 'none';
	$('editlink_tr_sat_location').style.display = 'none';
	$('editlink_tr_sat_directories').style.display = 'none';
	$('editlink_tr_sat_scrollbars').style.display = 'none';
	$('editlink_tr_sat_resizable').style.display = 'none';
	$('editlink_tr_sat_status').style.display = 'none';
}

function c5_showLinktoolElements3() {
	$('editlink_tr_head_satellite').style.display = document.all?'block':'table-row';
	$('editlink_tr_sat_windowname').style.display = document.all?'block':'table-row';
	$('editlink_tr_sat_width').style.display = document.all?'block':'table-row';
	$('editlink_tr_sat_height').style.display = document.all?'block':'table-row';
	$('editlink_tr_sat_top').style.display = document.all?'block':'table-row';
	$('editlink_tr_sat_left').style.display = document.all?'block':'table-row';
	$('editlink_tr_sat_menubar').style.display = document.all?'block':'table-row';
	$('editlink_tr_sat_toolbar').style.display = document.all?'block':'table-row';
	$('editlink_tr_sat_location').style.display = document.all?'block':'table-row';
	$('editlink_tr_sat_directories').style.display = document.all?'block':'table-row';
	$('editlink_tr_sat_scrollbars').style.display = document.all?'block':'table-row';
	$('editlink_tr_sat_resizable').style.display = document.all?'block':'table-row';
	$('editlink_tr_sat_status').style.display = document.all?'block':'table-row';
}
