﻿/*
author:		Alessandro Parodi a.parodi@axware.net
version:	0.1
date:		2011-01-14
required:	jquery-1.4.4.min.js
*/
var resizeManager = {
	toString:function(){return 'resizeManager class'},
	settings: {
		minW:960,
		minH:550,
		maxW:5000,
		maxH:4000
	},
	_obj:null,
	listeners:null,
	//timeout:null,
	//timeout_delay:500,
	w:null,
	initialize:function()
	{
		//
		this.listeners = new Array();
		// resize
		this.w = $(window);
		this.w.data('resizeManager', this);
		this.w.resize(function(){
			var handle = $(this).data('resizeManager');
			handle._obj = null;
			handle.onresize();
			//window.clearTimeout(handle.timeout);
			//handle.timeout = window.setTimeout('$(this).data(\'resizeManager\').onresize();', handle.timeout_delay);
		});
		this.w.resize();
	},
	getSize:function()
	{
		if(this._obj == null)
		{
			//
			var b = $(document.body);
			var previous_overflow = b.css('overflow');
			b.css('overflow', 'hidden');
			//
			var obj = new Object();
			obj.width = this.width();
			obj.height = this.height();
			obj.marginH = Math.floor((obj.width - this.settings.minW) / 2);
			obj.marginV = Math.floor((obj.height - this.settings.minH) / 2);
			this._obj = obj;
			//
			b.css('overflow', previous_overflow);
		}
		return this._obj;
	},
	reset:function()
	{
		this._obj == null;
	},
	onresize:function()
	{
		//debug.show('resize: ' + this.w.width() + 'x' + this.w.height());
		var o = this.getSize();
		for(var i = 0; i < this.listeners.length; i++)
			this.listeners[i].onresize(o);
	},
	width:function()
	{
		return Math.min(Math.max(this.w.width(), this.settings.minW), this.settings.maxW);
	},
	height:function()
	{
		return Math.min(Math.max(this.w.height(), this.settings.minH), this.settings.maxH);
	},
	addListener:function(obj)
	{
		for(var i = 0; i < this.listeners.length; i++)
			if(this.listeners[i] == obj)
				return;
		this.listeners.push(obj);
	},
	removeListener:function(obj)
	{
		var new_listeners = new Array();
		for(var i = 0; i < this.listeners.length; i++)
			if(this.listeners[i] != obj)
				new_listeners.push(this.listeners[i]);
	}
};
//
$(document).ready(function(){ 
	resizeManager.initialize();
});

