
function floatMenu_Engine( ) {
	this.wnd = null;

	this.opacity = 75;
	this.floatMenuOpen = 0;
	this.floatImageSrc = '';
	this.floatImageWidth = 0;
	this.floatImageHeight = 0;
	this.floatImageID = 0;
	this.floatOffsetY = 0;
	this.floatOffsetX = 0;
	this.fmContainer = '';

	this.previewImage = null;
	this.previewDirectories = null;

	this.resizeDimentsionWidth = 0;
	this.resizeDimentsionHeight = 0;

	this.actionEdit = 0;
	this.actionEditError = 0;

	this.events = new Array ();
	this.floatData = {};
};

floatMenu_Engine.prototype = {

	setWindow: function(o) {
		this.wnd = o;
	},

	setModuleID: function(v) {
		this.floatData.moduleID = v;
	},

	setSubID: function(v) {
		this.floatData.moduleSubID = v;
	},

	show: function(o, menuid, data) {

		if ( this.wnd == null )
		{
			alert('No window parent!');
			return false;
		}

		for (var i in data)
		{
			this.floatData[i] = data[i]
		}

		this.floatMenu = document.getElementById('floatMenu');
		this.floatMenu.style.display = 'block';

		// tartalom törlése
		for (var i=0; i<this.floatMenu.childNodes.length; i++) {
			this.floatMenu.removeChild(this.floatMenu.childNodes[i]);
		}
		this.floatMenu.appendChild(document.getElementById(menuid).cloneNode(true));

		// tartalom megjelenítése
		for (var i=0; i<this.floatMenu.childNodes.length; i++) {
			this.floatMenu.childNodes[i].style.display = 'block';
		}

		var x = findPosX(o);
		var y = findPosY(o);

		var info = this.wnd.getContainerOffsets();

		this.floatMenu.style.left = x + 5 - info.x;
		this.floatMenu.style.top = y + 5 - info.y;

		if (browser.isIE5up)
		{ 
			this.floatMenu.style.height = o.height - 8;
			this.floatMenu.style.width = o.width - 8;
		} else {
			this.floatMenu.style.height = o.height - 10 - 2 - 6;
			this.floatMenu.style.width = o.width - 10 - 2;
		}

		this.floatMenuBack = document.getElementById('floatMenuBack');

		this.floatMenuBack.style.display = this.floatMenu.style.display;
		this.floatMenuBack.style.left = this.floatMenu.style.left;
		this.floatMenuBack.style.top = this.floatMenu.style.top;
		this.floatMenuBack.style.height = o.height - 10;
		this.floatMenuBack.style.width = o.width - 10;

		this.floatMenuBack.style.opacity = (this.opacity / 100);
		this.floatMenuBack.style.MozOpacity = (this.opacity / 100);
		this.floatMenuBack.style.KhtmlOpacity = (this.opacity / 100);
		this.floatMenuBack.style.filter = "alpha(opacity=" + this.opacity + ")"; 

		this.floatMenuBack.style.zIndex = getZIndex();
		this.floatMenu.style.zIndex = getZIndex();

	},

	addEvent: function(ev, fn) {
		this.events[ev] = fn;
	},

	event: function(e) {

		if ( e == 'close' )
		{
			this.close();
			return;
		}

		for (var i in this.events)
		{
			if ( i == e ) {
				this.events[i](this, this.floatData);
				return;
			}
		}

		alert('Unhandled event "'+e+'"');
	},

	close: function() {
		this.floatMenu.style.display = 'none';
		this.floatMenuBack.style.display = 'none';
		this.wnd.hideSplash();
	},

	setPreviewImage: function(n) {
		this.previewImage = n;
	},

	setPreviewDirectories: function(a) {
		this.previewDirectories = a;
	},

	showPreviewImage: function(n) {
		var o = document.getElementById(this.previewImage);
		o.src = this.previewDirectories[0] + n;
	},

	setResizeDimension: function(w, h) {
		this.resizeDimentsionWidth = w;
		this.resizeDimentsionHeight = h;
	},

	getResizeDimension: function() {
		return {w:this.resizeDimentsionWidth, h:this.resizeDimentsionHeight}
	},

	getID: function(){
		return this.floatData.id;
	},

	getImage: function() {
		return this.floatData.image;
	},

	proceedEdit: function(id, rw, rh, cx1, cy1, cx2, cy2) {
		this.actionEdit = 1;
		this.actionEditError = 0;

		var param = rw+':'+rh+':'+cx1+':'+cy1+':'+cx2+':'+cy2;
		gRPC.request('?base=images&type=images&action=selectedit&param='+param+'&id=' +id + '&module=' + this.floatData.moduleID  + '&field=' + this.floatData.moduleSubID, fm_imageSelectLoaded );
	},

	closeEdit: function() {
		this.wnd.hideSplash();
	},

	getEditStatus: function() {
		return this.actionEdit;
	},

	getEditErrorStatus: function() {
		return this.actionEditError;
	}

}

/**
 * Fülek kezelése
 */
function imagesContentLoaded(d) {
	for (i=1; i<=3; i++)
	{
		if ( d.link == i)
		{
			document.getElementById('submenu_' + i).className = 'current';
		} else {
			document.getElementById('submenu_' + i).className = '';
		}
	}
}

var insertImageTab = 0;
var currentDirectory = 0;

function l1() {
	insertImageTab = 1;
	wimagesContent.request('?base=images&type=images&action=fupload', imagesContentLoaded, {link: 1});
}

function l2( dirID, page ) {
    if (typeof page == 'undefined')
        page = 0;

	if ( typeof(dirID) != 'undefined' )
		currentDirectory = dirID;

	insertImageTab = 2;
	wimagesContent.request('?base=images&type=images&action=fimages&dirid='+currentDirectory+'&ltype=' + wimagesContent.getFloatMenuMode()+'&page='+page, imagesContentLoaded, {link: 2});
}

function l3() {
	insertImageTab = 3;
	wimagesContent.request('?base=images&type=images&action=fimageslast&ltype=' + wimagesContent.getFloatMenuMode(), imagesContentLoaded, {link: 3});
}

function l4() {
	insertImageTab = 4;
	wimagesContent.request('?base=images&type=images&action=fhelp', imagesContentLoaded, {link: 4});
}

function postL1() {
	wimagesContent.showSplash();

	giRPC.request('main.php');
	n = giRPC.getIFrameName();

	o = document.getElementById('uform');
	o.action = '?base=images&type=images&action=upload&id=' + n;
	o.target = n;
	o.submit();
}

/**
 * Képkezeléssel kapcsolatos menüpontok
 */
function fm_imageShow(fm, d) {
	window.open('?action=popup&i=' + d.image, 'prev', 'resizable=yes,scrollbar=yes,left=100,top=100,width='+d.width+',height='+d.height)
}

function fm_imageSelect(fm, d) {
	fm.wnd.showSplash();
	gRPC.request('?base=images&type=images&action=select&id=' + d.id + '&module=' + d.moduleID  + '&field=' + d.moduleSubID, fm_imageSelectLoaded );
}

function fm_imageSelectLoaded(p) {
	var info = p.split(':');

	if ( floatMenu.actionEdit > 0 )
	{
		if ( info[0] == 'e' )
		{
			floatMenu.actionEditError = info[1];
		} else if ( info[0] == 't' )
		{
			floatMenu.showPreviewImage(info[1]);
		}

		floatMenu.actionEdit = 0;
		return;
	}

	if ( info[0] == 'e' ) {
		alert('\nKép beillesztése során probléma lépett fel, a hiba kódja ('+info[1]+')!\n');
	} else if ( info[0] == 't' ) {
		alert('\nKép beillesztése megtörtént!\n');
		floatMenu.showPreviewImage(info[1]);
	} else {
		alert('\nKép beillesztése során probléma lépett fel!\n');
	}

	floatMenu.close();
	floatMenu.wnd.hideSplash();
}

function fm_imageEdit(fm, d) {
	fm.wnd.showSplash();
	window.open('?base=images&type=images&action=edit', '', 'resizable=yesleft=100,top=100,width=640,height=480');
}

function fm_imageDelete(fm, d) {
	fm.wnd.showSplash();
	if (ConfirmDelMsg())
	{
		gRPC.request('?base=images&type=images&action=fdelete&id=' + d.id, fm_imageDeleteLoaded, {action: 'delete'});
	} else {
		fm.close();
		fm.wnd.hideSplash();
	}
}

function fm_imageDeleteLoaded(p, d) {
	if ( d.action == 'delete' )
	{
		floatMenu.close();

		if (insertImageTab == 2) { l2(); return; }
		if (insertImageTab == 3) { l3(); return; }

		l1();
		return;
	}
}

/**
 * Könyvtár kezeléssel kapcsolatos menüpontok
 */
function fm_directoryMkDir(fm, d){
	wdirectoryContent.setContainerStyle(
	{
		palign: 'absmiddle',
		width: 745,
		padding: '5px',
		position: 'absolute',
		border: '1px solid #dbdbdb',
		backgroundColor: '#FFFFFF'
	}
	);
	
	wdirectoryContent.setRequestCallBack( wdirectoryContentCallBack );
	wdirectoryContent.open('?base=images&type=images&action=fdirectory&dirid=' + d.dirid)
}

function wdirectoryContentCallBack() {
	document.getElementById('images-images-rpc-directory').focus();
}

function directoryMkDirPost() {
	wdirectoryContent.showSplash();

	giRPC.request('main.php');
	n = giRPC.getIFrameName();

	o = document.getElementById('uform');
	o.action = '?base=images&type=images&action=directory&id=' + n;
	o.target = n;
	o.submit();
}


function fm_directoryChDir(fm, d) {
	fm.close();
	l2(d.id);
}

function fm_directoryRmDir(fm, d) {
	fm.wnd.showSplash();
	if (ConfirmDelMsg())
	{
		gRPC.request('?base=images&type=images&action=rmdir&id=' + currentDirectory, fm_directoryRmDirLoaded);
	} else {
		fm.close();
		fm.wnd.hideSplash();
	}
}

function fm_directoryRmDirLoaded(p, d)  {
	
	if ( p != '-1' )
		l2(p);

	floatMenu.close();
	floatMenu.wnd.hideSplash();
}

function wInsertImageCallBack(param) {
	wimagesContent.setDocumentRoot( wInsertImage.getContainer() );
	wimagesContent.setParent( wInsertImage );
	wimagesContent.open()

	wimagesContent.addEvent('upload', l1);
	wimagesContent.addEvent('imageslast', l3);
	wimagesContent.addEvent('images', l2);
	wimagesContent.addEvent('help', l4);

	wimagesContent.event('upload');
}

