/**
x * @category    Unic
 * @package     Unic_Videowidget
 * @author      Monica Frisoni
 * @version     0.1
 */

var UnicLightbox = Class.create();



UnicLightbox.prototype = {
		
	objects: [],
//	url: '',
	domain: null,
	
	initialize: function(domain, wrapper_id){
//		this.url = url;
		this.initialized = true
		var objects = [];
		this.domain = domain;
		this.initHtml(wrapper_id);
		this.initWaitingClock();
		$w('overlay lightbox waiting_clock').each(function(id, index){objects[index] = $(id);});
		$w('overlay lightbox waiting_clock').each(function(id, index){objects[id] = $(id);});
		this.objects = objects;
		
		this.closeAll();
		
		$('overlay').observe('click', (function(){ this.closeAll();}).bind(this));
		$('lightboxNavClose').observe('click',(function(event) {this.closeAll(); }).bind(this));
		$(document).observe('keyup', (function(event){
			if( (event && event.keyCode == 27) || (window.event && window.event.keyCode == 27)){
				this.closeAll()
			}	
		}).bind(this));
	},
	
	initHtml: function(wrapper_id){

		var objBody = $$('body')[0];
		objBody.appendChild(Builder.node('div',{id:'overlay'}));
		objBody.appendChild(Builder.node('div',{id:'lightbox'},[
		      Builder.node('div',{id:wrapper_id},[
		          Builder.node('div',{id:'contentContainer'},[
		               Builder.node('div',{id:'contentContainerContent'}),
		               Builder.node('div',{id:'lightboxNav'},[
		                   Builder.node('a',{id:'lightboxNavClose', href: 'javascript:void(0)'})                            
		               ])
		          ])                            
		      ])    
		]));
		
		$('lightboxNavClose').innerHTML = '&nbsp;&nbsp;';
		
//		var objBody = $$('body')[0];
//		
//		var overlay = document.createElement('div');
//		objBody.appendChild(overlay);
//		overlay.setAttribute('id','overlay');
//		
//		
//		var lightbox = document.createElement('div');
//		objBody.appendChild(lightbox);
//		lightbox.setAttribute('id', 'lightbox');
//		lightbox.setAttribute('style', 'top: 100px;');
//		
//		var wrapper = document.createElement('div');
//		lightbox.appendChild(wrapper);
//		if(wrapper_id && wrapper_id != ''){
//			wrapper.setAttribute('id', wrapper_id);
//		}
//		
//		var contentContainer = document.createElement('div');
//		wrapper.appendChild(contentContainer);
//		contentContainer.setAttribute('id','contentContainer');
//		contentContainer.setAttribute('style','');
//		
//		var contentContainerContent = document.createElement('div');
//		contentContainer.appendChild(contentContainerContent);
//		contentContainerContent.setAttribute('id','contentContainerContent');
//		contentContainerContent.setAttribute('style','');
//		
//		var lightboxNav = document.createElement('div');
//		contentContainer.appendChild(lightboxNav);
//		lightboxNav.setAttribute('id','lightboxNav');
//		
//		var close = document.createElement('a');
//		lightboxNav.appendChild(close);
//		close.setAttribute('href','javascript:void(0)');
//		close.setAttribute('id','lightboxNavClose');
//		close.setAttribute('title','Close this Box');
//		close.innerHTML = '&nbsp;&nbsp;';
		
	},
	
	display: function(url, params){
		this.closeAll();
		
		this.initOverlay();
		this.initLightbox(url, params);

		new Effect.Parallel([
		    new Effect.Appear('overlay', { sync: true,  duration: 1.0, from: 0.0, to: 0.6}),
		    new Effect.Appear('lightbox', {sync: true, duration: 0.3})
		    ],{ 
		    	  duration: 0.8,
		    	  delay: 0.5
		    	});
		
	},
	
	initLightbox: function(url, params){
		//this.showWaitingClock();
		/*var winyoffset = window.pageYOffset;
		if(winyoffset == null)
		{
			winyoffset = document.body.scrollTop;
		}*/
		// stretch overlay to fill page and fade in
		var arrayPageSize = this.getPageSize();
		var arrayPageScroll = document.viewport.getScrollOffsets();
        
		var lightboxTop = arrayPageScroll[1] + (document.viewport.getHeight() / 10);
        var lightboxLeft = (new Number(arrayPageScroll[0])) + (new Number(arrayPageSize[0]))  - ((new Number(arrayPageSize[0]))/2) - ($('lightbox').getWidth()/2);
        this.getLightboxContent(url, params);
        if($('lightbox') != null)
        {
        	$('lightbox').setStyle({ top: lightboxTop + 'px', left: lightboxLeft + 'px'});
        }
        
        $('contentContainerContent').update('');
	},
	
	initOverlay: function(){
		var pageSizeArray = this.getPageSize();
		$('overlay').setStyle({ width: pageSizeArray[0] + 'px', height: pageSizeArray[1] + 'px'});

	},
	
	getLightboxContent: function(url, params){
		
		var options = {
			method: 'get',
			onSuccess: function(transport){
								
				var html = transport.responseText;
				
				$('contentContainerContent').update(html);
				
//				$('waiting_clock').hide();
			}
		};

//		var url = this.url + '?id=' + id;
//		var url = this.url;
		
		if(params != null){
			url = url + '?' + params;
		}
		new Ajax.Request(url, options);
	},
	
	closeAll: function(){
		this.objects.each(function(s){$(s).hide();})
		$('contentContainerContent').innerHTML = '';
	},
	
	initWaitingClock: function(){
		var objBody = $$('body')[0];
		
//		var div = document.createElement('div');
//		div.setAttribute('id','waiting_clock');
//		
//		var img = document.createElement('img');
//		img.setAttribute('id','waitin_clock_img');
//		img.setAttribute('src',this.domain + 'js/unicvideowidget/images/loading.gif');
//		
//		div.appendChild(img);
//		
//		objBody.appendChild(div);
		
		objBody.appendChild(Builder.node('div',{id:'waiting_clock', display: 'none'},[
		    Builder.node('img',{id:'waitin_clock_img', src: this.domain + 'js/unicvideowidget/images/loading.gif'})	                                                         
		]));
	},
	
	showWaitingClock: function(){
		var pageSizeArray = this.getPageSize();
		
		var _left = pageSizeArray[0] / 2;
		var _top = pageSizeArray[1] / 2;
		
//		var arrayPageScroll = document.viewport.getScrollOffsets();
//    	
//		var _left = arrayPageScroll[1] + 30;
//		var _top = arrayPageScroll[0] + pageSizeArray[0]/2 - 30/2;
		
//		alert(_left + ' - ' + _top);
		
		$('waiting_clock').show().setStyle({top: _top + "px", left: _left + "px"});
	},
	
	hideWaitingClock: function(){
		$('waiting_clock').hide();
	},
	
	getPageSize: function() {
        
	     var xScroll, yScroll;
		
		if (window.innerHeight && window.scrollMaxY) {	
			xScroll = window.innerWidth + window.scrollMaxX;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}
		
		var windowWidth, windowHeight;
		
		if (self.innerHeight) {	// all except Explorer
			if(document.documentElement.clientWidth){
				windowWidth = document.documentElement.clientWidth; 
			} else {
				windowWidth = self.innerWidth;
			}
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { // other Explorers
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}	
		
		// for small pages with total height less then height of the viewport
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else { 
			pageHeight = yScroll;
		}
	
		// for small pages with total width less then width of the viewport
		if(xScroll < windowWidth){	
			pageWidth = xScroll;		
		} else {
			pageWidth = windowWidth;
		}

		return [pageWidth,pageHeight];
	}
};



