﻿// ablakmeretezos fuggvenyek
Resizer = new function()
{
	this.iClientWidth = 0;
	this.iClientHeight = 0;

	this.iPrevClientWidth = 0;
	this.iPrevClientHeight = 0;
	
	this.iNormalClientWidth = 0;
	this.iNormalClientHeight = 0;
	this.iNormalWindowWidth = 0;
	this.iNormalWindowHeight = 0;

	this.OnResize = null;
	this.OnResizeEnded = null;
	
	this.OnMaximize = null;
	this.OnRestore = null;

	var me = this;
	this.Init = function()
	{
		window.onresize = function(pEvent) 
		{ 			
			me.setDivsSize(); 
			var iWidth = me.iClientWidth;
			var iHeight = me.iClientHeight;
			window.setTimeout( function() { me.ResizeMap(iWidth,iHeight), 500 });
		}
		
		me.setDivsSize();
		if(me.OnResizeEnded != null)
			me.OnResizeEnded(); 
			
		me.iPrevClientWidth = me.iClientWidth;
		me.iPrevClientHeight= me.iClientHeight;			
			
	}

	this.calcSize = function()
	{
		if ( typeof( window.innerWidth ) == 'number' ) {
			//Non-IE
			me.iClientWidth = window.innerWidth;
			me.iClientHeight = window.innerHeight;
		} else if ( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
			//IE 6+ in 'standards compliant mode'
			me.iClientWidth = document.documentElement.clientWidth;
			me.iClientHeight = document.documentElement.clientHeight;
		} else if ( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
			//IE 4 compatible
			me.iClientWidth = document.body.clientWidth;
			me.iClientHeight = document.body.clientHeight;
		}
	}

	// egy elem magassaga aranyos lesz a kliens terulet magassagaval, csokkentve az offset
	// ertekkel, es minimalisan akkora lesz, mint ami a minHeight
	this.setAnElemHeight = function(elementId, minHeight, iOffset)
	{
		var theElement = document.getElementById? document.getElementById(elementId): document.all? document.all[elementId]: null;
		if (theElement) {
			theElement.style.height = Math.max( Math.round( me.iClientHeight - iOffset ), minHeight ) + "px";
		}
	}

	// egy elem szelessege aranyos lesz a kliens terulet szelessegevel, csokkentve az offset
	// ertekkel, es minimalisan akkora lesz, mint ami a minWidth
	this.setAnElemWidth = function(elementId, minWidth, iOffset)
	{
		var theElement = document.getElementById? document.getElementById(elementId): document.all? document.all[elementId]: null;
		if (theElement) {
			theElement.style.width = Math.max( Math.round( me.iClientWidth - iOffset ), minWidth ) + "px";
		}
	}
	// kiszamolja az uj mereteket es meghivja az esemenykezelot
	this.setDivsSize = function()
	{
		me.calcSize();
		if(me.OnResize)		
			me.OnResize();
	}
	
	this.GetClientWidth = function()
	{
		return me.iClientWidth;
	}
	
	this.GetClientHeight = function()
	{
		return me.iClientHeight;
	}


	this.ResizeMap = function (yourWidth, yourHeight)
	{
		if((me.iClientWidth == yourWidth) && (me.iClientHeight==yourHeight) && ((yourWidth!=me.iPrevClientWidth) || (yourHeight!=me.iPrevClientHeight)) )
		{
			var iDeltaX = me.iPrevClientWidth - me.iClientWidth;
			var iDeltaY = me.iPrevClientHeight - me.iClientHeight;
			me.iPrevClientWidth = me.iClientWidth;
			me.iPrevClientHeight= me.iClientHeight;
			if(me.OnResizeEnded != null)
				me.OnResizeEnded(iDeltaX, iDeltaY); 
		}
	}
	
	// Teljes kepernyos fuggvenyek:

	this.Maximize = function()
	{
		me.calcSize();
		
		if(!isNaN(window.outerWidth))
			me.iNormalWindowWidth = window.outerWidth;
		else 
			me.iNormalWindowWidth = 0;

		if(!isNaN(window.outerHeight))
			me.iNormalWindowHeight = window.outerHeight;
		else 
			me.iNormalWindowHeight = 0;

		me.iNormalClientWidth = me.iClientWidth;
		me.iNormalClientHeight = me.iClientHeight;

		window.moveTo(0,0);
		window.resizeTo(window.screen.availWidth, window.screen.availHeight);
		
		me.calcSize();
		if(me.iNormalWindowWidth <= 0 || me.iNormalWindowHeight <= 0)
		{
			me.iNormalWindowWidth =  me.iNormalClientWidth + (window.screen.availWidth - me.iClientWidth);
			me.iNormalWindowHeight =  me.iNormalClientHeight + (window.screen.availHeight - me.iClientHeight);			
		}

		if(me.OnMaximize)
			me.OnMaximize();
	}

	this.Restore = function()
	{
		if(me.iNormalWindowWidth > 0 && me.iNormalWindowHeight > 0)
			window.resizeTo(me.iNormalWindowWidth, me.iNormalWindowHeight);
	
		if(me.OnRestore)
			me.OnRestore();
	}

}
