var Lightbox = new Class({
							
	image : {width:0,height:0},
	
	initialize: function(args) {
		this.elCanvas = $('canvas');
		if($chk(args)) {
			
			if($chk(args.url)) {
				this.url = args.url;	
			}
			
			if($chk(args.params)) {
				this.params = args.params;
				
				if(!$chk(args.params.photoid)) {
					this.params.photoalbum = false;	
				} else {
					this.params.photoalbum = true;	
				}
				
			}
			
		} else {
			
			return false;	
			
		}
	},
	
	request: function() {
		this.calculateCanvasSize();
		this.buildHTML();
		this.loadAjaxOverlay();
		this.displayAjaxLoader();
		//this.decideAction()
		LightboxGuru.Lightbox.loadHTML();
	},
	
	decideAction: function() {
		
		if( this.params.photoalbum > 0) {
			
			LightboxGuru.Lightbox.loadPhotoalbum();
			
		} else {
			
			this.params.imagename = this.url;
			new Request.JSON({
				method: 'post',
				url: '/ajax/Lightbox.isImage.ajax.php',
				data: this.params,
				instance: this,
				onFailure: function(exc) {
					alert(oLocalization.network_error);
				},
				onError: function() {
					alert(oLocalization.network_error);
				},
				onSuccess: function(o) {
					if(o.isimage == 1) {
						LightboxGuru.Lightbox.image.width = o.width;
						LightboxGuru.Lightbox.image.height = o.height;
						LightboxGuru.Lightbox.loadImage();
					} else {
						LightboxGuru.Lightbox.loadHTML();
					}
				}
			}).send();
			
		}
		
	},
	
	buildHTML: function() {
		/*
		original:
		<div id="ajaxoverlay"></div>
        <div id="ajaxloader" align="center"><table border="0"><tr><td align="center" valign="middle"><img src="/images/cool-ajax-loader.gif" align="center"/></td></tr></table></div>
        <div id="ajaxinterfacecontainer" align="center">
            <table id="draggable" style="position:relative;" border="0"><tr><td><div id="ajaxinterface"></div></td></tr></table>
        </div>
		--*/
		this.ajaxoverlay = new Element('div').setProperty('id','ajaxoverlay').injectInside($('body'));
		this.ajaxloader = new Element('div').setProperties({'id':'ajaxloader','align':'center'});
		this.ajaxloader.set('html','<table border="0"><tr><td align="center" valign="middle" style="width:75px; height:75px; background-color:#000000; border:1px solid #37BEDC;"><img src="/images/cool-ajax-loader.gif" align="center"/></td></tr></table>').injectInside($('body'));
		this.ajaxinterfacecontainer = new Element('div').setProperties({'id':'ajaxinterfacecontainer','align':'center'});
		this.ajaxinterfacecontainer.set('html','<table id="ajaxcontainertable" border="0" cellpadding="0" cellspacing="0" style="padding:0px;"><tr><td class="top-left-corner"></td><td id="ajaxtitle" align="left">Title</td><td id="td-ajax-closeicon-container" valign="top" align="right" style="padding-top:6px; background-color:#000;"><img id="coolajaxcloseicon" src="/images/close_ajaxbox_default.png" width="14" height="14" style="cursor:pointer;" onclick="LightboxGuru.Lightbox.byebye();"/></td><td class="top-right-corner"></td></tr><tr><td style="background-color:#000;"></td><td id="td-ajaxinterface-container" colspan="2" style="padding-bottom:7px; background-color:#000;"><div id="ajaxinterface" align="left"></div><div id="ajaxinterfaceweed"></div></td><td style="background-color:#000;"></td></tr></table>').injectInside($('body'))
		this.ajaxinterface = $('ajaxinterface');
		this.ajaxtitle = $('ajaxtitle');
		this.draggable = $('draggable');

	},
	
	loadImage: function() {
		LightboxGuru.Lightbox.image = new Asset.image('/images/' + this.params.imagename, {
			id: 'Lightboximage', 
			width: this.image.width,
			height: this.image.height,
			title: this.params.title, 
			alt: this.params.title,
			onload: function() {
				LightboxGuru.Lightbox.injectImage();
			}
		});
	},
	
	loadPhotoalbum: function() {
		
		
		/* this.ajaxoverlay = new Element('div').setProperty('id','ajaxoverlay').injectInside($('body'));
		this.ajaxloader = new Element('div').setProperties({'id':'ajaxloader','align':'center'});
		this.ajaxloader.set('html','<table border="0"><tr><td align="center" valign="middle" style="width:75px; height:75px; background-color:#000000; border:1px solid #37BEDC;"><img src="/images/cool-ajax-loader.gif" align="center"/></td></tr></table>').injectInside($('body'));
		this.ajaxinterfacecontainer = new Element('div').setProperties({'id':'ajaxinterfacecontainer','align':'center'});
		this.ajaxinterfacecontainer.set('html','<table id="draggable" border="0" cellpadding="0" cellspacing="0" style="padding:0px;"><tr><td id="ajaxtitle" align="left"></td><td id="td-ajax-closeicon-container" valign="middle" align="right" style="padding:7px;"><img id="coolajaxcloseicon" src="/images/close_ajaxbox_default.png" align="center" width="14" height="14" style="cursor:pointer;" onclick="LightboxGuru.Lightbox.byebye();"/></td></tr><tr><td colspan="2" style="padding:7px; padding-top:0px;"><div id="ajaxinterface" align="left"></div></td></tr></table>').injectInside($('body'))
		this.ajaxinterface = $('ajaxinterface');
		this.ajaxtitle = $('ajaxtitle');
		this.draggable = $('draggable'); */
		
		$('ajaxtitle').setStyle('padding','0px');
		$('ajaxtitle').setStyle('background','#000');
		$('td-ajax-closeicon-container').setStyle('padding','0px');
		$('td-ajax-closeicon-container').setStyle('background','#000');
		$('td-ajaxinterface-container').setStyle('padding','0px');
		$('coolajaxcloseicon').setStyle('margin-top','7px');
		$('coolajaxcloseicon').setStyle('margin-right','7px');
		this.draggable.setStyle('background','none');
		this.ajaxinterface.setStyle('background','none');
		this.ajaxinterface.setStyle('padding','0px');
		this.ajaxinterface.setStyle('border','none');
		//this.ajaxinterface.setStyle('border-bottom','1px solid #1C4F6B');
		$('draggable').setStyle('border','1px solid #1C4F6B');
		
		this.loadHTML();

	},
	
	injectImage: function() {
		this.ajaxinterface.setStyle('width','285px');
		this.ajaxinterface.setStyle('width','75px');
		this.ajaxinterface.setStyle('background-color','#111');
		this.ajaxinterface.setStyle('border-color','#111');
		this.ajaxinterface.setStyle('padding','0px');
		this.ajaxinterface.setStyle('padding','0px');
		this.ajaxinterface.setStyle('border-color','#111');
		this.ajaxtitle.setStyle('color','#4FC8E3');
		this.ajaxtitle.set('text',this.params.title);
		this.draggable.setStyle('background-color','#111');
		this.draggable.setStyle('border-color','#000');
		this.draggable.setStyle('border-width','1px');
		this.draggable.setStyle('border-style','solid');
		this.hideAjaxLoader();
		this.loadAjaxInterface();
		//width transition
		new Fx.Tween(this.ajaxinterface, {
			'duration':350,
			transition: 'back:out',
			onComplete: function() {
				new Fx.Tween(LightboxGuru.Lightbox.ajaxinterface, {
					'duration':350,
					transition: 'back:out',
					onComplete: function() {
						LightboxGuru.Lightbox.image.setStyle('opacity',0);
						LightboxGuru.Lightbox.image.injectInside(LightboxGuru.Lightbox.ajaxinterface);
						new Fx.Tween(LightboxGuru.Lightbox.image, {duration:1000}).start('opacity',1);
						//LightboxGuru.Lightbox.makeDragable();
					}
				}).start('height',75,LightboxGuru.Lightbox.image.height);
			}
		}).start('width',285,LightboxGuru.Lightbox.image.width);

	},
	
	loadHTML: function() {
		new Request.HTML({
			method: 'post',
			url: '/ajax/'+this.url,
			data: this.params,
			instance: this,
			onFailure: function(exc) {
				LightboxGuru.Lightbox.byebye();
				alert(oLocalization.network_error);
			},
			onError: function() {
				LightboxGuru.Lightbox.byebye();
				alert(oLocalization.network_error);
			},
			onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
				if($chk(LightboxGuru.Lightbox.params.title)) {
					LightboxGuru.Lightbox.ajaxtitle.set('text',LightboxGuru.Lightbox.params.title);	
				} 
				LightboxGuru.Lightbox.ajaxinterface.set('html',responseHTML);					
				LightboxGuru.Lightbox.hideAjaxLoader();
				LightboxGuru.Lightbox.loadAjaxInterface();
				//LightboxGuru.Lightbox.makeDragable();
				//LightboxGuru.top = 80;
				LightboxGuru.customtop = false;
				Context.lightbox = true;

			}
		}).send();	
	},
	
	makeDragable: function() {
		if(Browser.Engine.gecko) {
			var drag = new Drag('draggable', {handle:'draghandle'});
		}
	},
	
	calculateCanvasSize: function () {
		//fullscreenElement = document.getElementById("canvas");
		var htmlheight = document.body.parentNode.scrollHeight;  
		var windowheight = window.innerHeight;
		if ( htmlheight < windowheight ) { 
			$(document.body).setStyle('height', windowheight + 'px'); 
			this.elCanvas.setStyle('height', windowheight + 'px'); 
		} else { 
			$(document.body).setStyle('height', htmlheight + 'px'); 
			this.elCanvas.setStyle('height', htmlheight + 'px'); 
		}
		this.elCanvas.setStyle('width', '100%');
	},
	
	adjustOverlay: function() {
		if(this.ajaxoverlay.getStyle('height').toInt() < document.body.parentNode.scrollHeight) {
			this.ajaxoverlay.setStyle('height',document.body.parentNode.scrollHeight);
		}		
	},
	
	displayAjaxLoader: function() {
		
		var offset = 80;
		if(Context.get('mobile')) {
			offset = 10;
		}
		
		this.ajaxloader.setStyle('opacity',0.6);
		this.ajaxloader.setStyle('width', this.elCanvas.getStyle('width'));
		if(window.getScroll().y > LightboxGuru.top && !LightboxGuru.customtop) {
			this.ajaxloader.setStyle('top', (window.getScroll().y+LightboxGuru.top + offset));
		} else {
			this.ajaxloader.setStyle('top', LightboxGuru.top + offset);
		}
	},
	
	hideAjaxLoader: function() {
		this.ajaxloader.setStyle('opacity',0);
		this.ajaxloader.setStyle('width', '0px');
		var end = $('end-of-page').getPosition().y;						
		this.elCanvas.setStyle('height', end);
		$(document.body).setStyle('height', this.elCanvas.getStyle('height', end)); 
	},
	
	loadAjaxOverlay: function() {
		
		if(!this.params.photoalbum) {
			
			this.ajaxoverlay.setStyle('opacity',0.6);
			this.ajaxoverlay.setStyle('height', this.elCanvas.getStyle('height'));
			this.ajaxoverlay.setStyle('width', this.elCanvas.getStyle('width'));
			
		} else {
			
			this.ajaxoverlay.setStyle('opacity',0.9);
			this.ajaxoverlay.setStyle('height', this.elCanvas.getStyle('height'));
			this.ajaxoverlay.setStyle('width', this.elCanvas.getStyle('width'));
			
		}
	},
	
	loadAjaxInterface: function() {
		
		if(Context.get('mobile')) {
			
			this.ajaxinterface.setStyle('opacity', 1);
			this.ajaxinterfacecontainer.setStyle('opacity', 1);
			
		} else {

			var fadeFx = new Fx.Tween(this.ajaxinterface, {'duration':700, 'link':'chain'});
			fadeFx.start('opacity',0,1);
			var fadeFx = new Fx.Tween(this.ajaxinterfacecontainer, {'duration':700, 'link':'chain'});
			fadeFx.start('opacity',0,1);	
			
		}
		
		if(window.getScroll().y > LightboxGuru.top && !LightboxGuru.customtop) {
			this.ajaxinterfacecontainer.setStyle('top', (window.getScroll().y + LightboxGuru.top));
		} else {
			this.ajaxinterfacecontainer.setStyle('top', LightboxGuru.top);
		}
		
		this.adjustOverlay();
	},
	
	byebye: function() {
		Context.lightbox = false;
		this.ajaxoverlay.dispose();
		this.ajaxloader.dispose();
		this.ajaxinterfacecontainer.dispose();
	}
	
});
