
var Controller = new Class({

	initialize: function()
	{
		LB = new lb($('lb'), PATH.root + PATH.site + 'lb/');
	},
	
	doAction: function(action, instance)
	{
		VO.action =  action;
		this.instance = instance;
		this.url = PATH.root + PATH.site + 'php/do.php';

		switch(action)
		{
			
			case 'openImage':
				instance.blur();
				
				var image = eval("(" + instance.get('ref') + ")");
				VO.imageFile = image.file;
				
				var imageType = image.w > image.h ? 'landscape' : 'portrait';
				var viewSize = $(document.body).getSize();
				var screenType = viewSize.x > viewSize.y ? 'landscape' : 'portrait';
				switch(screenType)
				{
					case 'landscape':
					// means height shouls be used as reference
						if(image.h > (viewSize.y - 80))
						{
							var originalHeight = image.h;
							image.h = (viewSize.y - 80);
							var perc = image.h / originalHeight;
							image.w = Math.round(image.w * perc);
						}
						if(image.w.toInt() > viewSize.x - 40)
						{
							var originalWidth = image.w;
							image.w = (viewSize.x - 40);
							var perc = image.w / originalWidth;
							image.h = Math.round(image.h * perc);
						}
					break;
					case 'portrait':
					// means width shouls be used as reference
						if(image.w > (viewSize.x - 40))
						{
							var originalWidth = image.w;
							image.w = (viewSize.x - 40);
							//get percentage
							var perc = image.w / originalWidth;
							image.h = Math.round(image.h * perc);
						}
						if(image.h.toInt() > viewSize.y - 80)
						{
							var originalHeight = image.h;
							image.h = (viewSize.y - 80);
							var perc = image.h / originalHeight;
							image.w = Math.round(image.w * perc);
						}
					break;
				}				
				
				VO.imageWidth = image.w;
				VO.imageHeight = image.h;
				VO.imageType = screenType;
				
				var lbWidth = image.w.toInt() + 20; 
				
				LB.doLoad(VO, lbWidth);
				break;
			case 'initLB':
				LB.doPosition();
				break;
			case 'closeLB':
				LB.doClose();
				break;
			default:
				alert(action);
		}
	},
	
	afterRequest:function(rT, rE, rH, rJ)
	{
		VO.checkSession = false;

		switch(VO.action)
		{
			default:
			alert(rH);
		}
	},
	
	
	doRequest:function(type)
	{
		switch(type)
		{
			case 'html':
				new Request.HTML({url:this.url, update:this.update, data:VO, onComplete:function(rT, rE, rH, rJ){this.afterRequest(rT, rE, rH, rJ);}.bind(this) }).send();
				break;
			default:
				new Request({url:this.url, data:VO, onComplete:function(rT, rE){this.afterRequest(rT, rE);}.bind(this) }).send();
		}
	}
	
})