function gui()
{
	this.floatingIslandsInit = function(fToExecuteAfterAdjustPos)
	{
		this.repositionOuterContainer();
		$(window).resize(function(){
			var g = new gui;
			g.repositionOuterContainer();
		});			
		
		this.enableIslandsMove();	
		this.enableIslandsMinMax();		
		this.saveIslandsDefaultPositions();	
		this.adjustIslandsPositions(fToExecuteAfterAdjustPos);
	}
	
	this.readjustIslandsPositions = function(actIsl)
	{
		activeFloatIslands = actIsl;		
		this.adjustIslandsPositions();		
	}
	

	this.hideFloatIslands = function(wc)
	{
		var winObj = findWindow(wc);
		winObj.$(".c_main_float").css("margin-left", "-10000px");
	}
	
	
	this.showFloatIslands = function(wc)
	{
		var winObj = findWindow(wc);
		winObj.$(".c_main_float").css("margin-left", "-0px");
	}	

	this.saveIslandsDefaultPositions = function()
	{
		var islandObj;
		var islandDataObj;
		var islandsData = new Object();
		var j;
		var k;
		var className;
		for(j=0; j<$(".c_outer_float .c_main_float").length; j++)
		{
			islandObj = $(".c_outer_float .c_main_float:eq(" + j + ")")
			islandDataObj = new Object;
			islandDataObj.X = parseInt(islandObj.css("left"));
			islandDataObj.Y = parseInt(islandObj.css("top"));			
			if(islandObj.css("z-index")!="auto") islandDataObj.Z = islandObj.css("z-index");			
			else islandDataObj.Z = "1";
			islandDataObj.Minimized = 0;
					
			islandObj = islandObj.attr("class").split(" ");
			className = "";
			for(k=0; k<islandObj.length; k++)
			{
				className = islandObj[k].trim();
				if(className.indexOf("c_")==0 && className.indexOf("c_main")==-1)
				break;
			}			
			if(className.length>0)
			{
				eval("islandsData." + className + " = islandDataObj");			
			}			
		}

		floatIslandsDefaultPositions = islandsData;
	}


	this.repositionOuterContainer = function()
	{
		var outObj = $(".c_outer_float:first");
		if(outObj.attr("class")==undefined) return;
		outObj.css("position", "absolute");
		outObj.css("top", "0px");
		outObj.css("left", "0px");	
		outObj.css("width", $(window).width() + "px");			
		outObj.css("height", $(window).height() + "px");					
	}
	
	
	this.enableIslandsMove = function()
	{
		// izracunamo najvisji zindex in ga zapisemo v global
		var maxZ = parseInt(readGlobal("islandMaxZIndex"));
		var j = 0;
		var z;
		if(isNaN(maxZ))
		{
			maxZ = 0;
			for(j = 0; j<$(".c_outer_float .c_main").length; j++)
			{
				z = parseInt($(".c_outer_float .c_main").css("z-index"));
				if(!isNaN(z))
				{
					if(z>maxZ) maxZ = z;
				}
			}
		}
		if(maxZ==0) maxZ = 200;		
		writeGlobal("islandMaxZIndex", maxZ);
		
		$(".c_outer_float .c_main .title .move").parent().parent().draggable({cursor: 'move', delay: 50, handle: '.title', containment: 'parent', opacity: 0.70, start : function(){
			writeGlobal("islandMaxZIndex", readGlobal("islandMaxZIndex")+ 1);																																		
			
			$(this).css("z-index", readGlobal("islandMaxZIndex"));																																		   
		},
		stop : function(){
			var g = new gui;
			g.saveIslandGuiData(this);
		}
		});		
	}	
	
	
	this.enableIslandsMinMax = function()
	{
		// klik na min max
		$(".c_outer_float .c_main .title .minmax").each(function(){
													   
			$(this).bind("click", function(){
				var g = new gui;
				g.minMaxIsland($(this));
			});											
		});
		
		// dvojni klik na naslov
		$(".c_outer_float .c_main .title").each(function(){
													   
			$(this).bind("dblclick", function(){
											  
				var minMaxObj = $(this).find(".minmax:eq(0)");
				var g = new gui;
				g.minMaxIsland(minMaxObj);
			});											
		});		
	}


	this.minMaxIsland = function(minMaxObj)
	{
		if(minMaxObj.attr("class")==undefined) return false;											  
	
		var outElement = minMaxObj.parent().parent();
		var titleElement = minMaxObj.parent();
		
		if(minMaxObj.attr("class").indexOf("min_icon")!=-1)
		{
			outElement.find(".content").slideUp("fast");				
			minMaxObj.removeClass("min_icon");
			minMaxObj.addClass("max_icon");							
		}
		else
		{					
			outElement.find(".content").slideDown("fast");				
			minMaxObj.removeClass("max_icon");
			minMaxObj.addClass("min_icon");												
		}
		var g = new gui;
		g.saveIslandGuiData(outElement);		
	}	

	
	this.saveIslandGuiData =  function(element)
	{
		var className = $(element).attr("class");
		var classObj;
		var j = 0;
		var x;
		var y;
		var z;
		var minimized;
				
		if(className.length>0)
		{
			className = className.split(" ");
			for(j=0; j<className.length; j++)
			{
				classObj = className[j].trim();
				if(classObj.indexOf("c_")==0 && classObj.indexOf("c_main")==-1) 
				{
					z = parseInt($(element).css("z-index"));
					if(isNaN(z)) z = 0;
					x = parseInt($(element).css("left"));
					y = parseInt($(element).css("top"));	
					minimized = $(element).find(".title .minmax:eq(0)");
					if(minimized.attr("class")!=undefined) 
					{
						if(minimized.attr("class").indexOf("min_icon")!=-1) minimized = 0;
						else minimized = 1;
					}
					else minimized = 0;
					
					if(!isNaN(x) && !isNaN(y))
					{
					
						$.post(links.gui.saveIslandGuiData, {IslandName: classObj, Y: y, X: x, Z: z, Minimized: minimized, WindowName : windowName, WindowMode: windowMode}, function(data){
						}, "json");
					}
				}
			}
		}
	}	
	
	this.adjustIslandsIframesSize = function()
	{
		$(".c_main").each(function(){
	
			var j =0;
			var jElement;
			var offset = 0;
			
			var iframe = $(this).find(".content iframe:eq(0)");				
			var content = $(this).find(".content:eq(0)");
			var title = $(this).find(".title:eq(0)");
			var island = $(this);
						
			// visina
			var ih = island.height();
			var th = title.height();
			var ch = content.height();
			var tih = 0;
					
			// sirina
			var iw = island.width();
			var tw = title.width();;
			var cw = content.width();			
			var tiw = 0;
			
			// borders (top and bottom) - title + content
			var tbh = parseInt(title.css("border-bottom-width"));
			var tbhb = parseInt(title.css("border-top-width"));
			if(isNaN(tbh)) tbh = 0;
			if(!isNaN(tbhb)) tbh = tbh + tbhb;
			var cbh = parseInt(content.css("border-bottom-width"));
			var cbhb = parseInt(content.css("border-top-width"));
			if(isNaN(cbh)) cbh = 0;
			if(!isNaN(cbhb)) cbh = cbh + cbhb;
			
			// paddings top bottom (content)
			var cph = parseInt(content.css("padding-bottom"));
			var cphb = parseInt(content.css("padding-top"));
			if(isNaN(cph)) cph = 0;
			if(!isNaN(cphb)) cph = cph + cphb;
			
			// paddings left right (content)
			var cpw = parseInt(content.css("padding-left"));
			var cpwb = parseInt(content.css("padding-right"));
			if(isNaN(cpw)) cpw = 0;
			if(!isNaN(cpwb)) cpw = cpw + cpwb;			
			
			
			// kolikor je se prostega v contentu nategnemo za iframe
			if(iframe.attr("src")!=undefined)
			{
				tih = parseInt(content.height());
				tiw = content.width();				
				
				
				for(j=0; j<content.children("!iframe").length; j++)
				{
					jElement = content.children("*:eq(" + j + ")");
					if(jElement.attr("src")==undefined)
					{
						if(jElement.css("display")!="none" && content.css("display")!="none")
						{
							offset = parseInt(jElement.height());
							if(!isNaN(offset)) tih = tih - offset;						
							offset = parseInt(jElement.css("padding-bottom"));
							if(!isNaN(offset)) tih = tih - offset;
							offset = parseInt(jElement.css("padding-top"));
							if(!isNaN(offset)) tih = tih - offset;							
							offset = parseInt(jElement.css("border-top-width"));
							if(!isNaN(offset)) tih = tih - offset;
							offset = parseInt(jElement.css("border-bottom-width"));
							if(!isNaN(offset)) tih = tih - offset;								
						}
					}				
				}					
				iframe.width(tiw);
				iframe.height(tih);	
			}					
			
			island.height("auto");
		});		
	}
	
	
		
	this.adjustIslandsPositions = function(callbackFunction)
	{
	
		var islandName;
		var top;
		var left;
		var z;
		var minimized;
		var islandObj;
		var g;
		var postParams = new Object;
		
		// hide all flating windows
		$(".c_outer_float .c_main_float").css("margin-left", "-10000px");	
		postParams.WindowName = windowName;
		postParams.WindowMode = windowMode;
		postParams.CallbackFunction = callbackFunction;
		$.post(links.gui.getIslandsGuiData, postParams, function(data){
						
			if(data.Status==1)
			{
				var WindowName = data.Window;
				var islandName;
				var islandDataObj;
				var islandObj;
				var x;
				var y;
				var z;
				var Minimized;
				
				
				for(islandName in activeFloatIslands)
				{
					islandDataObj = undefined;
					if(eval(data.Islands)!=undefined) islandDataObj = eval("data.Islands." + islandName);
					if(islandDataObj!=undefined)
					{
						x  = eval("islandDataObj.X");
						y  = eval("islandDataObj.Y");
						z  = eval("islandDataObj.Z");
						Minimized  = eval("islandDataObj.Minimized");
						
					}
					else
					{
						x  = eval("floatIslandsDefaultPositions." + islandName + ".X");
						y  = eval("floatIslandsDefaultPositions." + islandName + ".Y");
						z  = eval("floatIslandsDefaultPositions." + islandName + ".Z");
						Minimized = 0;
					}
				
					try
					{
						islandObj = $("." + islandName + ":eq(0)");	
						if(islandObj.attr("class")) 
						{
							islandObj.css("top", y + "px");
							islandObj.css("left", x + "px");					
							islandObj.css("z-index", z);	
							
							if(Minimized==1)
							{						
								islandObj.find(".content").hide();			
								islandObj.find(".title .minmax").removeClass("min_icon");
								islandObj.find(".title .minmax").addClass("max_icon");						
							}
							else
							{
								islandObj.find(".content").show();			
								islandObj.find(".title .minmax").addClass("min_icon");
								islandObj.find(".title .minmax").removeClass("max_icon");								
							}
							
							islandObj.css("margin-left", "0px");			
						}										
					}
					catch(e)
					{
					
					}
				}
			}
			
			
			// resize iframes
			g = new  gui;
			g.adjustIslandsIframesSize();
			
			// run callback;
			if(data.callback)
			{
				var cb = data.callback.split(".");
				if(cb.length>1)
				{
					if(typeof(eval(cb[0]))=="function")
					{
						var pageObj = eval("new "+ cb[0] +";");
						if(typeof(eval("pageObj." + cb[1]))=="function")
						{
							eval("pageObj." + cb[1] + "()");				
						}		
					}				
				}
				else
				{
					if(typeof(eval(cb[1]))=="function")
					{
						eval(cb[1] + "()");				
					}							
				}
			}
					

		}, "json");		

	}	
	
}